<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">WES</journal-id><journal-title-group>
    <journal-title>Wind Energy Science</journal-title>
    <abbrev-journal-title abbrev-type="publisher">WES</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Wind Energ. Sci.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">2366-7451</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/wes-11-2567-2026</article-id><title-group><article-title>Large-eddy simulation of thermally stratified atmospheric boundary layers with a lattice Boltzmann method</article-title><alt-title>LES of stratified ABL with an LBM</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Korb</surname><given-names>Henry</given-names></name>
          <email>henry.korb@geo.uu.se</email>
        <ext-link>https://orcid.org/0000-0003-3177-5960</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Asmuth</surname><given-names>Henrik</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Schönherr</surname><given-names>Martin</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Geier</surname><given-names>Martin</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Ivanell</surname><given-names>Stefan</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-4896-6771</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Wind Energy Division, Department of Earth Sciences, Uppsala University, Visby, Sweden</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Institute for Computational Modeling in Civil Engineering, TU Braunschweig, Braunschweig, Germany</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Henry Korb (henry.korb@geo.uu.se)</corresp></author-notes><pub-date><day>21</day><month>July</month><year>2026</year></pub-date>
      
      <volume>11</volume>
      <issue>7</issue>
      <fpage>2567</fpage><lpage>2583</lpage>
      <history>
        <date date-type="received"><day>24</day><month>September</month><year>2025</year></date>
           <date date-type="rev-request"><day>20</day><month>October</month><year>2025</year></date>
           <date date-type="rev-recd"><day>13</day><month>June</month><year>2026</year></date>
           <date date-type="accepted"><day>24</day><month>June</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Henry Korb et al.</copyright-statement>
        <copyright-year>2026</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026.html">This article is available from https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e125">Thermal stratification plays an important role in wind farm flows and must therefore be included in simulations of such flows. At the same time, wind farms are covering larger areas, requiring very large domains and leading to exceptional computational costs for large-eddy simulations (LESs). The lattice Boltzmann method (LBM) is a novel approach to LES of wind farm flows that is particularly efficient and suitable for massively parallel hardware, such as  graphics processing units (GPUs). In this work, we present a novel model for LES-LBM of stratified atmospheric boundary layers, using a so-called double-distribution function approach. We develop a novel boundary condition to apply Monin–Obukhov similarity theory and implement a number of other components required for simulations of stratified boundary layers in the GPU-resident version of the open-source LBM solver <sc>VirtualFluids</sc>. The model is validated for conventionally neutral and stably stratified boundary layers. Results agree closely with numerical references. The model is able to simulate conventionally neutral boundary layers with parameters typical for wind energy applications of the order of real time on a single GPU. Future work will include development of a precursor–successor method for wind farm flow simulations and improvements to the collision operator of the temperature model.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Vetenskapsrådet</funding-source>
<award-id>2022-06725</award-id>
</award-group>
<award-group id="gs2">
<funding-source>VINNOVA</funding-source>
<award-id>n/a</award-id>
</award-group>
<award-group id="gs3">
<funding-source>Svenska Forskningsrådet Formas</funding-source>
<award-id>n/a</award-id>
</award-group>
</funding-group>
</article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e140">Wake recovery <xref ref-type="bibr" rid="bib1.bibx1" id="paren.1"/>, the persistence of wind farm wakes <xref ref-type="bibr" rid="bib1.bibx44" id="paren.2"/>, and the occurrence of gravity waves <xref ref-type="bibr" rid="bib1.bibx32" id="paren.3"/> all depend on the thermal stratification of the atmospheric boundary layer (ABL). Large-eddy simulation (LES) enables the most accurate examination of these phenomena that is feasible with currently available hardware. Wind farms or clusters of wind farms cover large areas, yet simulations need to be well resolved to fully capture the behavior of the boundary and inversion layer <xref ref-type="bibr" rid="bib1.bibx4" id="paren.4"/>. The resulting simulations thus feature extremely large numbers of degrees of freedom. Current LES models for the ABL, typically CPU-resident finite-volume or pseudospectral solvers, require days or months of computing time on very large compute clusters to perform such simulations.</p>
      <p id="d2e155">A new generation of solvers seeks to alleviate the immense computational cost by utilizing graphics processing units (GPUs), such as <sc>MircoHH</sc>
<xref ref-type="bibr" rid="bib1.bibx49" id="paren.5"/>, <sc>AMR-Wind</sc> <xref ref-type="bibr" rid="bib1.bibx30" id="paren.6"/>, and <sc>FastEddy</sc> <xref ref-type="bibr" rid="bib1.bibx46" id="paren.7"/>. <xref ref-type="bibr" rid="bib1.bibx49" id="text.8"/> report that 32 CPU cores are necessary to achieve the same computational performance as one NVIDIA Quadro K6000. <xref ref-type="bibr" rid="bib1.bibx46" id="text.9"/> have already reported that 1 GPU equals the performance of 256 CPU cores, highlighting the rapidly increasing speed of GPUs.</p>
      <p id="d2e184">However, a different approach, based on the lattice Boltzmann method (LBM), has also been introduced to wind energy and boundary layer research over the last decade. A recent review can be found in <xref ref-type="bibr" rid="bib1.bibx27" id="text.10"/>. The LBM's mathematical structure is well suited for the use of massively parallel hardware, such as GPUs. In the LBM,  fluid is described as a set of populations on the nodes of a Cartesian grid. The LBM then follows a two-step algorithm. First, the populations at a node collide, then they are advected to neighboring nodes <xref ref-type="bibr" rid="bib1.bibx28" id="paren.11"/>. The collision step is potentially non-linear but is a local operation, while the advection step simply consists of moving memory on a computer. While initial formulations of the LBM were unstable at high Reynolds numbers, recent advances in the formulation of the collision step have rendered it a suitable method for high-Reynolds flows and LES <xref ref-type="bibr" rid="bib1.bibx17 bib1.bibx19 bib1.bibx22" id="paren.12"/>.</p>
      <p id="d2e196">LES based on the LBM has been used now for over a decade to simulate large-scale boundary layer flows. <xref ref-type="bibr" rid="bib1.bibx42" id="text.13"/> present a simulation of 10 <inline-formula><mml:math id="M1" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M2" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10 <inline-formula><mml:math id="M3" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula> of Tokyo's urban area at a <inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> resolution on up to 1000 GPUs, demonstrating the method's suitability for very large problems. Further examples of simulations utilizing GPUs include <xref ref-type="bibr" rid="bib1.bibx25" id="text.14"/> and <xref ref-type="bibr" rid="bib1.bibx33" id="text.15"/>. Both report near-real-time computational performance, demonstrating the high computational efficiency of the LBM on GPUs. None of the aforementioned simulations include wall models. <xref ref-type="bibr" rid="bib1.bibx6" id="text.16"/> introduced a wall-modeling approach suitable for atmospheric boundary layers and showed very good agreement with reference results.</p>
      <p id="d2e248">All of the aforementioned models only consider isothermal boundary layers, and very few models considering thermal stratification have previously been presented in the literature. The temperature equation can be discretized either via “traditional” approaches, such as finite difference or finite volume, or via a modified LBM. The former is named a hybrid approach, while the latter is referred to as a double-distribution function approach (DDF). A hybrid approach was applied in one of the earliest studies of stratified boundary layer flows with the LBM, the <sc>TheLMA</sc> project, described in a series of publications <xref ref-type="bibr" rid="bib1.bibx39 bib1.bibx40 bib1.bibx41" id="paren.17"/>. Another solver designed for atmospheric boundary layers implementing a hybrid approach is presented in <xref ref-type="bibr" rid="bib1.bibx14" id="text.18"/>. <sc>ProLB</sc> employs the hybrid recursive regularized collision model <xref ref-type="bibr" rid="bib1.bibx22" id="paren.19"/> and the wall-modeling approach by <xref ref-type="bibr" rid="bib1.bibx36" id="text.20"/>. However, it is not mentioned that it utilizes GPUs, and no remarks on its computational performance are given. An overview of advection–diffusion LBM models can be found in <xref ref-type="bibr" rid="bib1.bibx21" id="text.21"/>, where the authors also compare a number of more advanced LBM models. They find that models based on the cascaded LBM yield the most accurate results. A similar model is applied in <xref ref-type="bibr" rid="bib1.bibx3" id="text.22"/> to simulate the dissolution in porous media. <xref ref-type="bibr" rid="bib1.bibx52" id="text.23"/> present a method using the DDF approach for simulation of the stratified flow over a ridge. Both LBM models (for momentum and temperature) employ a multiple-relaxation time method <xref ref-type="bibr" rid="bib1.bibx13" id="paren.24"/>.</p>
      <p id="d2e282">In this paper, we propose a novel model to simulate the stratified atmospheric boundary layer via a DDF LBM model based on the cumulant LBM for momentum and a factorized cascaded model for the advection–diffusion equation. We describe the methodology in Sect. <xref ref-type="sec" rid="Ch1.S2"/>. We compare results obtained with our method to reference data for both a neutral and a stably stratified test case in Sect. <xref ref-type="sec" rid="Ch1.S3"/> and give our concluding remarks in Sect. <xref ref-type="sec" rid="Ch1.S4"/>. As with any model development, we tried many different variants until we converged on the model we present here. We document some of those approaches in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Methodology</title>
      <p id="d2e301">We will be begin by describing the fundamentals of the cumulant lattice Boltzmann method and its modifications to simulate atmospheric boundary layers. Subsequently, we present the method used to simulate the advection–diffusion of the potential temperature. Finally, we discuss novel formulations for boundary conditions and other aspects specific to modeling thermally stratified boundary layers.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Governing equations</title>
      <p id="d2e311">Our aim is to simulate the filtered incompressible Navier–Stokes equations with Coriolis forces coupled to an advection–diffusion equation of potential temperature via the Boussinesq approximation <xref ref-type="bibr" rid="bib1.bibx48" id="paren.25"><named-content content-type="pre">see</named-content><named-content content-type="post">and references therein</named-content></xref>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M5" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E1"><mml:mtd><mml:mtext>1</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><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>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E2"><mml:mtd><mml:mtext>2</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><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:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><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:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></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:mo>∂</mml:mo><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 open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><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:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">C</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E3"><mml:mtd><mml:mtext>3</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><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>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><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:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><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 open="(" close=")"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><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:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e575">Here, the coordinate system is denoted as <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:mo>[</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:msup><mml:mo>]</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M7" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> is time; <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the density; <inline-formula><mml:math id="M9" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> is the filtered velocity; <inline-formula><mml:math id="M10" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> is the pressure deviation from the background pressure; <inline-formula><mml:math id="M11" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> is the filtered potential temperature; the Coriolis and buoyancy forces are <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mi mathvariant="normal">C</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, respectively; and subgrid stresses and heat flux are parameterized via an effective viscosity and diffusivity, <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, respectively. We use Einstein's summation convention. The Coriolis force is given by

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M16" display="block"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">C</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>G</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M17" 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:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the Levi–Civita symbol, <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">G</mml:mi><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:mo>[</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>,</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the geostrophic wind with the geostrophic wind speed <inline-formula><mml:math id="M19" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula> and direction <inline-formula><mml:math id="M20" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi></mml:mrow></mml:math></inline-formula> is the Coriolis parameter that depends on the rotational speed of the Earth <inline-formula><mml:math id="M22" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> and latitude <inline-formula><mml:math id="M23" display="inline"><mml:mi mathvariant="italic">φ</mml:mi></mml:math></inline-formula>. The Boussinesq approximation assumes <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mi>g</mml:mi><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>r</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:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M25" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula> is the gravitational acceleration, <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a reference temperature, and <inline-formula><mml:math id="M27" 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. However, to remove the hydrostatic pressure, we take the horizontal average, denoted by <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mo>⋅</mml:mo><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>, of Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>) with <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula>, following, e.g., <xref ref-type="bibr" rid="bib1.bibx12" id="text.26"/>. We find that <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mo>〈</mml:mo><mml:mi>p</mml:mi><mml:mo>〉</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>〈</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>〉</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, since the continuity equation dictates <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. Splitting <inline-formula><mml:math id="M32" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> into <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:mo>〈</mml:mo><mml:mi>p</mml:mi><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula> and inserting the previous result in Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>), we can write

            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M34" display="block"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mi>g</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>-</mml:mo><mml:mo>〈</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>〉</mml:mo><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</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:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></disp-formula>

          if we replace <inline-formula><mml:math id="M35" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> by <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>. Contrary to “classical” computational fluid dynamics, we do not discretize these equations but instead solve them via the lattice Boltzmann method implemented in the GPU-resident version of the open-source solver <sc>VirtualFluids</sc>
<xref ref-type="bibr" rid="bib1.bibx20" id="paren.27"/>.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>The cumulant lattice Boltzmann method</title>
      <p id="d2e1132">The fundamental variable of the lattice Boltzmann method is the particle distribution function (PDF) <inline-formula><mml:math id="M37" display="inline"><mml:mi>f</mml:mi></mml:math></inline-formula>. The PDF describes the probability of encountering a particle with velocity <inline-formula><mml:math id="M38" display="inline"><mml:mi mathvariant="bold-italic">ξ</mml:mi></mml:math></inline-formula> at time <inline-formula><mml:math id="M39" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> and location <inline-formula><mml:math id="M40" display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula>. The discretization of velocity space to a lattice of discrete velocities <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ι</mml:mi><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mi>c</mml:mi></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula> as lattice velocity, leads to the discrete populations <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Following <xref ref-type="bibr" rid="bib1.bibx17" id="text.28"/>, we denote lattice directions with triplets of Greek indices corresponding to their directions in space and define <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ι</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>:=</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ι</mml:mi></mml:mrow></mml:math></inline-formula>. Note that Greek indices are not subject to the summation convention, and triplet indices in parentheses represent all possible permutations of that triplet. We employ a D3Q27 lattice, i.e., the set of 27 lattice directions of all permutations with <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The lattice speed of sound is <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>c</mml:mi><mml:msqrt><mml:mn mathvariant="normal">3</mml:mn></mml:msqrt></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, and each <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> has an associated weight <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. Macroscopic quantities, that is quantities on the scale of continuum mechanics, are obtained by taking different order moments of <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, for example density (zeroth order) and velocity (first order):

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M50" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E6"><mml:mtd><mml:mtext>6</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">∑</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E7"><mml:mtd><mml:mtext>7</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">∑</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e1501"><inline-formula><mml:math id="M51" display="inline"><mml:mi mathvariant="bold-italic">F</mml:mi></mml:math></inline-formula> is the total force density. The evolution of the PDF is described by the Boltzmann equation. Replacing the continuous PDFs with the discrete populations and integration along the characteristic <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> from <inline-formula><mml:math id="M53" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> to <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> yields the lattice Boltzmann equation:

            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M55" display="block"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M56" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> is the collision operator, which is discussed later on. Asymptotic analysis shows that the moments of the lattice Boltzmann equation yield the weakly compressible Navier–Stokes equations, which approximate the incompressible Navier–Stokes equations with an error proportional to <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mtext>Ma</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, with the Mach number <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mtext>Ma</mml:mtext><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> being a reference velocity. The size of this error is effectively controlled by the size of the time step and the grid spacing since

            <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M60" display="block"><mml:mrow><mml:mtext>Ma</mml:mtext><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msqrt><mml:mn mathvariant="normal">3</mml:mn></mml:msqrt><mml:msub><mml:mi>V</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e1744">By limiting <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:mtext>Ma</mml:mtext><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula>, we ensure that the error is small. The collision operator is of great importance for the accuracy and stability of the method. In this work we employ the cumulant collision operator <xref ref-type="bibr" rid="bib1.bibx17 bib1.bibx18" id="paren.29"/>; here we present a short overview. Generally, collision operators relax the populations towards an equilibrium. The cumulant collision operator performs this relaxation in cumulant space, eliminating many shortcomings of traditional multi-relaxation time methods, mainly due to the fact that cumulants are statistically independent and can therefore be relaxed at independent rates. First, the populations in continuous form undergo a Laplace transformation to wave number space:

            <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M62" display="block"><mml:mrow><mml:mi>F</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">Ξ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="script">L</mml:mi><mml:mfenced close="}" open="{"><mml:mrow><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:munder><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ι</mml:mi><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ξ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">υ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M63" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> is the Dirac delta function. Thereafter, cumulants <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are obtained from the cumulant generating function

            <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M65" display="block"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mi>c</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">α</mml:mi></mml:msup><mml:msup><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:msup><mml:msup><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="normal">Ξ</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:msup><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="normal">Υ</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:msup><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="normal">Z</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mi>ln⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mi>F</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="bold">Ξ</mml:mi></mml:mfenced></mml:mrow></mml:mfenced><mml:msub><mml:mo mathsize="2.0em">|</mml:mo><mml:mrow><mml:mi mathvariant="normal">Ξ</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Υ</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e1974">Note that transformation from populations to cumulants is implemented via the chimera transform, which greatly reduces the computational cost while significantly improving the numerical precision of the computation <xref ref-type="bibr" rid="bib1.bibx17" id="paren.30"><named-content content-type="post">Appendix I</named-content></xref>. After transformation, the cumulants are relaxed towards their respective equilibrium <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow><mml:mtext>eq</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M67" display="block"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow><mml:mo>∗</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow><mml:mtext>eq</mml:mtext></mml:msubsup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> denotes the post-collision cumulant. Finally, the post-collision cumulants are transformed back to populations. The relaxation rates <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are computed according to <xref ref-type="bibr" rid="bib1.bibx18" id="text.31"/>. The relaxation rate of the second-order cumulants <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">110</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is related to the kinematic viscosity by

            <disp-formula id="Ch1.E13" content-type="numbered"><label>13</label><mml:math id="M71" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">110</mml:mn><mml:mo>)</mml:mo></mml:mrow></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:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mi mathvariant="normal">Δ</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:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2178">In this study, we employ an eddy-viscosity model to explicitly model the subgrid scales of the LES. Some studies, e.g., <xref ref-type="bibr" rid="bib1.bibx19" id="text.32"/> and <xref ref-type="bibr" rid="bib1.bibx16" id="text.33"/>, suggest using the cumulant operator alone to conduct implicit LES. However, we have found this method unsuitable for performing LES of the atmospheric boundary layer due to the very high Reynolds number, as discussed in <xref ref-type="bibr" rid="bib1.bibx6" id="text.34"/>.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>The lattice Boltzmann method for advection–diffusion</title>
      <p id="d2e2198">To solve the advection–diffusion equation, one can either use a so-called hybrid solver that solves the Navier–Stokes equations via the LBM and the advection–diffusion equation via finite differences or use the finite-volume method. The other possibility is to use another LBM solver to solve the advection–diffusion equation with a double-distribution function (DDF) approach. The hybrid method has the advantage that it requires significantly less memory, since for every node in the grid we only have to save one quantity, as compared to the DDF, which needs to save 27 (if one uses a D3Q27 lattice) quantities per node. Therefore, we also implemented a hybrid approach first, but, despite much effort, it was not successful. We discuss the details of the approaches we tried in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>. Instead, we pivoted to a DDF approach: We can describe a scalar, such as the potential temperature <inline-formula><mml:math id="M72" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula>, with a second set of populations, <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and define

            <disp-formula id="Ch1.E14" content-type="numbered"><label>14</label><mml:math id="M74" display="block"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">∑</mml:mo><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2251">During collision, only the zeroth-order moment, i.e., <inline-formula><mml:math id="M75" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula>, is conserved. The lattice Boltzmann equation for the advection–diffusion problem is analogous to the formulation for momentum:

            <disp-formula id="Ch1.E15" content-type="numbered"><label>15</label><mml:math id="M76" display="block"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:msubsup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mtext>AD</mml:mtext></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2362">In this work, we employ the factorized central moment-based collision operator described in <xref ref-type="bibr" rid="bib1.bibx53" id="text.35"/>. Similar to the cumulant method, the populations <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> first undergo a Laplace transform,

            <disp-formula id="Ch1.E16" content-type="numbered"><label>16</label><mml:math id="M78" display="block"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">Ξ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="script">L</mml:mi><mml:mfenced open="{" close="}"><mml:mrow><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:munder><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ι</mml:mi><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ξ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">υ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2469">Central moments <inline-formula><mml:math id="M79" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> are then obtained from the moment-generating function,

            <disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M80" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mi>c</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">α</mml:mi></mml:msup><mml:msup><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:msup><mml:msup><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="normal">Ξ</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:msup><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="normal">Υ</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:msup><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="normal">Z</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">Ξ</mml:mi></mml:mrow></mml:msup><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">Ξ</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mo mathsize="2.0em">|</mml:mo><mml:mrow><mml:mi mathvariant="normal">Ξ</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Υ</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2599">Again, the computation is performed via the chimera transform. To obtain the factorized central moments <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, the following orthogonalization is applied:

                <disp-formula specific-use="align"><mml:math id="M82" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">000</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">000</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">110</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">110</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">111</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">111</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">000</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">210</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">210</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">010</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">211</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">211</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">011</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">220</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">220</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">000</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">221</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">221</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">9</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">001</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">222</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">κ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">222</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">27</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">000</mml:mn></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e2998">The factorized central moments are then relaxed towards their equilibria:

            <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M83" display="block"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow><mml:mo>∗</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow><mml:mtext>eq</mml:mtext></mml:msubsup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          All equilibria are zero, except

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M84" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E19"><mml:mtd><mml:mtext>19</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>)</mml:mo></mml:mrow><mml:mtext>eq</mml:mtext></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">000</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E20"><mml:mtd><mml:mtext>20</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">220</mml:mn><mml:mo>)</mml:mo></mml:mrow><mml:mtext>eq</mml:mtext></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msubsup><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">000</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E21"><mml:mtd><mml:mtext>21</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">222</mml:mn><mml:mo>)</mml:mo></mml:mrow><mml:mtext>eq</mml:mtext></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">6</mml:mn></mml:msubsup><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">000</mml:mn></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e3192">The first-order relaxations are related to the diffusivity by

            <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M85" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>D</mml:mi><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mi mathvariant="normal">Δ</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:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          while we set all other relaxation rates to one. After the relaxation, the factorized central moments have to be transformed back to central moments and then populations.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Boundary conditions</title>
      <p id="d2e3253">We require two boundary conditions for both momentum and potential temperature fields. At the top of the domain we set a slip condition for the fluid flow and either a Neumann- or a Dirichlet-type boundary condition for potential temperature. At the bottom we  set a combined stress and flux boundary condition computed from a wall model that is discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS5"/>. Boundary conditions in the LBM have to be specified for the populations; therefore a variety of methods can be found resulting in the same macroscopic boundary condition. For the sake of completeness, we describe the boundary conditions for the fluid in more detail in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>. A Dirichlet-type boundary condition for the scalar can be implemented via the anti-bounce-back rule as described in <xref ref-type="bibr" rid="bib1.bibx28" id="text.36"><named-content content-type="post">p. 318</named-content></xref>. A Neumann boundary condition can be implemented via this approach as well. However, in preliminary studies, we found this approach to cause spurious oscillations at the top of the domain.</p>
      <p id="d2e3265">Instead, we present here a formulation for a flux boundary condition, which will also be used as a Neumann boundary condition at the top of the domain. We first recall a few basic relations. The total flux <inline-formula><mml:math id="M86" display="inline"><mml:mi mathvariant="bold-italic">j</mml:mi></mml:math></inline-formula> is the sum of the diffusive and advective fluxes <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">j</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">j</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E23" content-type="numbered"><label>23</label><mml:math id="M89" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">j</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">j</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">j</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>D</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e3337">Our goal is now to set a specified wall flux <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which will be computed either from a wall model or, in the case of a Neumann boundary condition, from <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>D</mml:mi><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M92" display="inline"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:math></inline-formula> is the specified gradient in the wall normal direction <inline-formula><mml:math id="M93" display="inline"><mml:mi mathvariant="bold-italic">n</mml:mi></mml:math></inline-formula>, with <inline-formula><mml:math id="M94" display="inline"><mml:mi mathvariant="bold-italic">n</mml:mi></mml:math></inline-formula> pointing to the fluid domain.</p>
      <p id="d2e3411">We compute the diffusive flux at the node from the first-order moment of <inline-formula><mml:math id="M95" display="inline"><mml:mi mathvariant="bold-italic">g</mml:mi></mml:math></inline-formula>:

            <disp-formula id="Ch1.E24" content-type="numbered"><label>24</label><mml:math id="M96" display="block"><mml:mrow><mml:msubsup><mml:mi>j</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo movablelimits="false">∑</mml:mo><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e3473">We then prescribe the flux at the wall <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">j</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> to be equal to the diffusive flux in the tangential direction and equal to <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the wall normal direction:

            <disp-formula id="Ch1.E25" content-type="numbered"><label>25</label><mml:math id="M99" display="block"><mml:mrow><mml:msubsup><mml:mi>j</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>j</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup><mml:mo>-</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>j</mml:mi><mml:mi>j</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup><mml:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e3554">Finally, we employ the bounce-back rule to compute the missing distributions <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E26" content-type="numbered"><label>26</label><mml:math id="M101" display="block"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi>j</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S2.SS5">
  <label>2.5</label><title>Wall model</title>
      <p id="d2e3662">At the bottom boundary, we make use of the standard Monin–Obukhov similarity theory (MOST) to determine the wall shear stress <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and heat flux <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M104" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E27"><mml:mtd><mml:mtext>27</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>z</mml:mi><mml:mi>L</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>z</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>g</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E28"><mml:mtd><mml:mtext>28</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>∗</mml:mo></mml:msub></mml:mrow><mml:mi mathvariant="italic">κ</mml:mi></mml:mfrac></mml:mstyle><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>ln⁡</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>z</mml:mi><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:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E29"><mml:mtd><mml:mtext>29</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>∗</mml:mo></mml:msub><mml:mi mathvariant="italic">κ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close=")" open="("><mml:mrow><mml:mi>ln⁡</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>z</mml:mi><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">H</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M105" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> is a stability parameter based on the Obukhov length <inline-formula><mml:math id="M106" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula>; <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>∗</mml:mo></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi></mml:mfrac></mml:mstyle></mml:msqrt></mml:mrow></mml:math></inline-formula> is the friction velocity; <inline-formula><mml:math id="M108" display="inline"><mml:mi mathvariant="italic">κ</mml:mi></mml:math></inline-formula> is the von Kármán constant; <inline-formula><mml:math id="M109" 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> and <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">H</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are roughness lengths for momentum and temperature, respectively; and <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the surface temperature <xref ref-type="bibr" rid="bib1.bibx5" id="paren.37"/>. The similarity functions for momentum (<inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>) and heat (<inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>) have to be determined experimentally. We use the classical Businger–Dyer relations <xref ref-type="bibr" rid="bib1.bibx11" id="paren.38"/>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M114" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E30"><mml:mtd><mml:mtext>30</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E31"><mml:mtd><mml:mtext>31</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mrow><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:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E32"><mml:mtd><mml:mtext>32</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable rowspacing="0.2ex" class="aligned" columnspacing="1em" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>ln⁡</mml:mi><mml:mfenced open="[" close="]"><mml:mrow><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">M</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msubsup><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">M</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:msup><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>      </mml:mtext><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msup><mml:mi>tan⁡</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">π</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mtext>      </mml:mtext><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>,</mml:mo><mml:mtext>      </mml:mtext><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E33"><mml:mtd><mml:mtext>33</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="aligned" columnspacing="1em" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mn mathvariant="normal">2</mml:mn><mml:mi>ln⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo><mml:mtext>      </mml:mtext><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>,</mml:mo><mml:mtext>      </mml:mtext><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e4371">To facilitate the comparison with reference data from <xref ref-type="bibr" rid="bib1.bibx8" id="text.39"/> in Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/>, we set <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4.8</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">7.8</mml:mn></mml:mrow></mml:math></inline-formula>. However, no values for unstable stratification are reported in <xref ref-type="bibr" rid="bib1.bibx8" id="text.40"/>. We therefore set <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>, as suggested by <xref ref-type="bibr" rid="bib1.bibx5" id="text.41"/>. Based on a user-specified distance <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, we sample an exchange-location temperature <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and velocity <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. Additionally, the exchange-location quantities are exponentially averaged over time, as is recommended by <xref ref-type="bibr" rid="bib1.bibx54" id="text.42"/>. We do not apply any spatial averaging. The user can choose to prescribe either the surface heat flux or the surface temperature. We employ a variation of algorithm(1) or algorithm(2) from <xref ref-type="bibr" rid="bib1.bibx7" id="text.43"/>, depending on the prescribed quantity, displayed in Algorithm <xref ref-type="other" rid="Ch1.Prog1"/>. In the following, the subscript <inline-formula><mml:math id="M121" display="inline"><mml:mi mathvariant="normal">t</mml:mi></mml:math></inline-formula> denotes vectors tangential to the wall, overbars denote temporal averages, and quantities at the first node in the fluid domain are denoted with the subscript 1. Superscripts indicate the time step.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog1"><label>Algorithm 1</label><caption><p id="d2e4488">Algorithm for computing wall shear stress and kinematic heat flux.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d2e4495" specific-use="STATE"><inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mo>←</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msubsup><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mo>←</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e4553" specific-use="REPEAT"><bold>repeat</bold> <list>
    <list-item>
      <p id="d2e4561" specific-use="STATE"><inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mtext>Old</mml:mtext></mml:msubsup><mml:mo>←</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e4586" specific-use="STATE">compute <inline-formula><mml:math id="M125" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> via Eq. (<xref ref-type="disp-formula" rid="Ch1.E27"/>)</p></list-item>
    <list-item>
      <p id="d2e4600" specific-use="STATE">compute <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> via Eqs. (<xref ref-type="disp-formula" rid="Ch1.E32"/>) and (<xref ref-type="disp-formula" rid="Ch1.E33"/>)</p></list-item>
    <list-item>
      <p id="d2e4631" specific-use="STATE"><inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mover accent="true"><mml:mrow><mml:mfenced open="|" close="|"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mtext>EL</mml:mtext><mml:mo>,</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:mrow><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>ln⁡</mml:mi><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>EL</mml:mtext></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:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e4700" specific-use="IF"><bold>if</bold> surface temperature given <bold>then</bold> <list>
    <list-item>
      <p id="d2e4711" specific-use="STATE"><inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msubsup><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mtext>EL</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>ln⁡</mml:mi><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">H</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></p></list-item></list></p></list-item>
    <list-item>
      <p id="d2e4796" specific-use="ENDIF"><bold>end</bold> <bold>if</bold></p></list-item></list></p>
            </list-item>

    <list-item>

      <p id="d2e4806" specific-use="UNTIL"><bold>until</bold> <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mtext>Old</mml:mtext></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mtext>Old</mml:mtext></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>&lt;</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></p>
            </list-item>

    <list-item>

      <p id="d2e4856" specific-use="STATE"><inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mo>∗</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="normal">|</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">t</mml:mi></mml:mrow></mml:msub><mml:mi mathvariant="normal">|</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula></p>
            </list-item>
          </list></disp-quote></boxed-text>
      <p id="d2e4919">The combined boundary condition, which we refer to as the <italic>surface layer boundary condition</italic>, is executed in the following steps: <list list-type="custom"><list-item><label>1.</label>
      <p id="d2e4927">Load <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> at the boundary node, and compute <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> via Eqs. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) and (<xref ref-type="disp-formula" rid="Ch1.E7"/>).</p></list-item><list-item><label>2.</label>
      <p id="d2e4975">Load <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msubsup><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> at the boundary node, and compute <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> via Eq. (<xref ref-type="disp-formula" rid="Ch1.E14"/>).</p></list-item><list-item><label>3.</label>
      <p id="d2e5010">Compute <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> according to Algorithm <xref ref-type="other" rid="Ch1.Prog1"/> using <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M141" 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>, <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">H</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.</p></list-item><list-item><label>4.</label>
      <p id="d2e5110">Apply the inverse momentum exchange method to determine <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub></mml:mrow></mml:math></inline-formula>.</p></list-item><list-item><label>5.</label>
      <p id="d2e5144">Apply the flux boundary condition to determine <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub></mml:mrow></mml:math></inline-formula>.</p></list-item></list></p>
      <p id="d2e5167">Thus, the boundary condition is entirely local, with the exception of <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>EL</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. Furthermore, the populations <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub></mml:mrow></mml:math></inline-formula> can be computed independently, making the boundary condition easily adaptable to curved boundaries. However, the populations <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub></mml:mrow></mml:math></inline-formula> cannot be computed independently.</p>
</sec>
<sec id="Ch1.S2.SS6">
  <label>2.6</label><title>Further models</title>
      <p id="d2e5238">A number of further modifications to <sc>VirtualFluids</sc> had to be implemented in order for it to be fully equipped to conduct simulations of atmospheric boundary layers. Namely, Coriolis and buoyancy forces have to be computed, and a Rayleigh damping layer has to be implemented.</p>
<sec id="Ch1.S2.SS6.SSS1">
  <label>2.6.1</label><title>Coriolis force</title>
      <p id="d2e5251">The Coriolis force can be computed directly from Eq. (<xref ref-type="disp-formula" rid="Ch1.E4"/>) based on a user-prescribed geostrophic wind and Coriolis parameter. The Coriolis force is simply added to the body force field in our implementation. Further potential for optimization by combining the computation with the collision kernel was left for future work.</p>
</sec>
<sec id="Ch1.S2.SS6.SSS2">
  <label>2.6.2</label><title>Buoyancy force</title>
      <p id="d2e5264">As described in the beginning, we model the effect of buoyancy via the Boussinesq approximation. After the collision kernel for <inline-formula><mml:math id="M152" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula>, we add a number of models to compute the buoyancy. For simplicity's sake, we allocate an array with the size of the grid for a local reference temperature. The constant-buoyancy provider only computes a buoyancy force according to Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>) and adds it to the body force field. Thus we can implement a constant-reference-temperature profile simply by changing the way that the reference temperature is initialized. The second variant computes buoyancy relative to the horizontally averaged temperature, as  described by Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>).</p>
</sec>
<sec id="Ch1.S2.SS6.SSS3">
  <label>2.6.3</label><title>Damping layer</title>
      <p id="d2e5286">Since the free atmosphere is essentially an undamped oscillator, spurious oscillations that can arise at the top of the capping inversion propagate throughout the domain. To mitigate these waves, it is common practice to use Rayleigh damping layers <xref ref-type="bibr" rid="bib1.bibx24" id="paren.44"/>. The force of in the damping layer <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is computed by

              <disp-formula id="Ch1.E34" content-type="numbered"><label>34</label><mml:math id="M154" display="block"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mi>w</mml:mi><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e5359">The function <inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>z</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> of height normalized between start and end heights <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of the damping layer can be chosen freely in our implementation but is normally set to <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>z</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub><mml:msup><mml:mi>sin⁡</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi mathvariant="italic">π</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mover accent="true"><mml:mi>z</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, with a damping factor roughly <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M160" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M161" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−4</sup> <inline-formula><mml:math id="M163" display="inline"><mml:mrow class="unit"><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS7">
  <label>2.7</label><title>Turbulence models</title>
      <p id="d2e5505">As mentioned in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>, we parameterize subgrid-scale fluxes with effective viscosity and diffusivity models. A few turbulent viscosity models have been implemented in previous studies, namely the Smagorinsky–Lilly <xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx35" id="paren.45"/>, QR <xref ref-type="bibr" rid="bib1.bibx51" id="paren.46"/>, and anisotropic minimum dissipation (AMD) <xref ref-type="bibr" rid="bib1.bibx45" id="paren.47"/> models. Note that due to the relation between second-order cumulants and the stress tensor, the Smagorinsky and QR models can be computed very efficiently during the collision step. In addition, we have implemented a number of turbulent diffusivity models for this study, two standalone diffusivity models, namely a constant turbulent Prandtl number model and the model suggested by <xref ref-type="bibr" rid="bib1.bibx38" id="text.48"/>. Finally, we have also implemented the stratified AMD model proposed by <xref ref-type="bibr" rid="bib1.bibx2" id="text.49"/>, which augments the original AMD model for turbulence viscosity with a term modeling the effect of buoyancy on turbulence and includes a turbulence diffusivity. As this model requires the full velocity gradient tensor, which is only available in between collisions, we compute the effective turbulence viscosity and diffusivity for computing the collision at time step <inline-formula><mml:math id="M164" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> from the velocity and temperature field at time <inline-formula><mml:math id="M165" 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>. In preliminary studies, we found the stratified AMD model to yield the best results; therefore we use only this model in the remainder of this study.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Results</title>
      <p id="d2e5554">We validate our model against reference data in two stability conditions, namely conventionally neutral and stable conditions. We provide a convergence study of the advection–diffusion model in Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/> and find the order of convergence to be slightly above 2 for both advection and diffusion.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Conventionally neutral boundary layer</title>
      <p id="d2e5566">We begin validation of our model for thermally stratified boundary layers by comparing them to the conventionally neutral boundary layer (CNBL) simulation described in <xref ref-type="bibr" rid="bib1.bibx9" id="text.50"/>. This case has also been used to validate the LES solver <sc>AMR-Wind</sc>, and we therefore have two references to compare them to. The geostrophic wind speed <inline-formula><mml:math id="M166" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula> is 5 <inline-formula><mml:math id="M167" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, the Coriolis parameter is 10<sup>−4</sup> <inline-formula><mml:math id="M169" display="inline"><mml:mrow class="unit"><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, and the lapse rate of the free atmosphere is <inline-formula><mml:math id="M170" display="inline"><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:math></inline-formula> <inline-formula><mml:math id="M171" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3 <inline-formula><mml:math id="M172" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">km</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The reference temperature is <inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M174" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 290 <inline-formula><mml:math id="M175" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi></mml:mrow></mml:math></inline-formula>, and gravitational acceleration is 9.81 <inline-formula><mml:math id="M176" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The domain has an extent of 2560 <inline-formula><mml:math id="M177" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M178" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 2560 <inline-formula><mml:math id="M179" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M180" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 896 <inline-formula><mml:math id="M181" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>. We conduct simulations at two resolutions, <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M183" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 7 <inline-formula><mml:math id="M184" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M186" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3.5 <inline-formula><mml:math id="M187" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to grids B and C of the original publication, respectively. The boundaries in the streamwise and lateral directions are periodic. At the top we employ a slip condition for momentum and the Neumann condition, as described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS4"/>, for the potential temperature, with a temperature gradient equal to the free atmosphere lapse rate. The bottom boundary is a surface layer boundary condition with a prescribed heat flux of 0 <inline-formula><mml:math id="M188" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">ms</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and a roughness length of <inline-formula><mml:math id="M189" 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> <inline-formula><mml:math id="M190" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.05 <inline-formula><mml:math id="M191" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>. The domain is initialized with constant geostrophic wind speed and a constant temperature gradient equal to the lapse rate of the free atmosphere. Further details of the reference case can be found in <xref ref-type="bibr" rid="bib1.bibx9" id="text.51"/>. We assume an eddy turnover time <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M193" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1700 <inline-formula><mml:math id="M194" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> and average from 55 to 65 <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. We use the stratified AMD model with a model constant set to <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula>. Since we use an explicit subgrid-scale model, we “turn off” the limiter of the cumulants by setting it to 10<sup>5</sup>. No damping is activated.</p>
      <p id="d2e5911">The original study employs a pseudospectral code developed at the National Center for Atmospheric Research (NCAR) over the last 40 years, with pseudospectral spatial discretization in horizontal directions and second-order finite differences in the vertical direction. Time stepping is performed with a third-order Runge–Kutta scheme. In addition to the results from the original publication, we also compare our results to the results published in the Exawind benchmark database <xref ref-type="bibr" rid="bib1.bibx29" id="paren.52"/> obtained with <sc>AMR-Wind</sc>. <sc>AMR-Wind</sc> utilizes a combination of finite-volume and finite-element methods for spatial discretization and second-order accurate time stepping; details on <sc>AMR-Wind</sc> can be found in <xref ref-type="bibr" rid="bib1.bibx30" id="text.53"/>. We compare our results to results obtained on grids C and D, with a resolution of <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M199" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3.5 <inline-formula><mml:math id="M200" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M202" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.75 <inline-formula><mml:math id="M203" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, respectively, as these are the resolutions available in the Exawind benchmark database.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e5982">Instantaneous velocity fields of the CNBL case for grids B (left) and C (right). Horizontal wind speed (top) and vertical velocity (bottom) in the plane at <inline-formula><mml:math id="M204" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M205" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 37 <inline-formula><mml:math id="M206" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> are shown. The black arrow in the top row indicates the average wind direction in the plane.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f01.png"/>

        </fig>

      <fig id="F2"><label>Figure 2</label><caption><p id="d2e6016">Instantaneous velocity fields of the CNBL case for grids B (left) and C (right). Horizontal wind speed (top) and vertical velocity (bottom) in the plane at <inline-formula><mml:math id="M207" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M208" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 333 <inline-formula><mml:math id="M209" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> are shown. The black arrow indicates the average wind direction in the plane.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f02.png"/>

        </fig>

      <p id="d2e6047">We provide a qualitative impression of the simulation in Figs. <xref ref-type="fig" rid="F1"/> and <xref ref-type="fig" rid="F2"/>, where we show instantaneous horizontal wind speed and vertical velocity at <inline-formula><mml:math id="M210" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M211" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 35 <inline-formula><mml:math id="M212" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M213" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M214" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 333 <inline-formula><mml:math id="M215" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, equivalent to 10 % and 90 % of the boundary layer height, respectively. Similar plots are shown in <xref ref-type="bibr" rid="bib1.bibx9" id="text.54"/>. At the lower height we see the dominance of small-scale turbulent structures in both horizontal and vertical directions, as expected due to the proximity of the wall. At higher resolution we can observe that smaller scales are resolved. Close to the inversion height, we find much fewer small scales; instead, larger structures dominate. Comparing the direction of the mean horizontal velocity indicated by the black arrow, we observe the expected veer.</p>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e6104">Vertical profiles of averaged velocity (left), wind veer (center), and temperature (right) of the CNBL reference case.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f03.png"/>

        </fig>

      <p id="d2e6113">Moving to a more quantitative analysis, we show the horizontal averages of wind speed <inline-formula><mml:math id="M216" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula>, wind direction <inline-formula><mml:math id="M217" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula>, and potential temperature of our model, referred to as VF, alongside respective results from references in Fig. <xref ref-type="fig" rid="F3"/>. Overall, we find very good agreement between our results and the references. Within the boundary layer in particular we observe very close agreement in all quantities, indicating that the boundary condition and other models behave correctly. However, we observe that the B grid is not able to properly resolve the upper edge of the capping inversion, resulting in a weaker gradient. This is in line with observations in <xref ref-type="bibr" rid="bib1.bibx9" id="text.55"/> and a range of other literature, for example <xref ref-type="bibr" rid="bib1.bibx49" id="text.56"/>. Furthermore, we observe that the wind direction in the free atmosphere is not exactly aligned with the geostrophic wind for the higher-resolution case. This inaccuracy is due to the forcing of the geostrophic wind being very small compared to the streamwise velocity in the free atmosphere. See Appendix <xref ref-type="sec" rid="App1.Ch1.S5"/> for more details. Nevertheless, the error is small and seems to have a negligible effect on the wind direction below the inversion.</p>
      <p id="d2e6141">From the averaged results we can compute an inversion height <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as the height with the maximum temperature gradient. We list our results next to the results reported by <xref ref-type="bibr" rid="bib1.bibx9" id="text.57"/> and <sc>AMR-Wind</sc> in Table <xref ref-type="table" rid="T1"/>. Furthermore, we list the friction velocity computed from the wall model. All results agree closely. The inversion height decreases with higher resolution for all solvers. <sc>AMR-Wind</sc> reports the lowest inversion heights, while our results for grid C are in the middle. We report the lowest friction velocity, while <xref ref-type="bibr" rid="bib1.bibx9" id="text.58"/> report the highest. Nevertheless, the results agree within 10 % of each other.</p>

<table-wrap id="T1"><label>Table 1</label><caption><p id="d2e6174">Friction velocity and inversion height of the CNBL case compared to references.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right" colsep="1"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right" colsep="1"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Quantity</oasis:entry>
         <oasis:entry rowsep="1" namest="col2" nameend="col3" align="center" colsep="1"><sc>VirtualFluids</sc></oasis:entry>
         <oasis:entry rowsep="1" namest="col4" nameend="col5" align="center" colsep="1">Berg et al. (2020) </oasis:entry>
         <oasis:entry rowsep="1" namest="col6" nameend="col7" align="center"><sc>AMR-Wind</sc></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">B</oasis:entry>
         <oasis:entry colname="col3">C</oasis:entry>
         <oasis:entry colname="col4">C</oasis:entry>
         <oasis:entry colname="col5">D</oasis:entry>
         <oasis:entry colname="col6">C</oasis:entry>
         <oasis:entry colname="col7">D</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>∗</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>/<inline-formula><mml:math id="M220" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.207</oasis:entry>
         <oasis:entry colname="col3">0.205</oasis:entry>
         <oasis:entry colname="col4">0.225</oasis:entry>
         <oasis:entry colname="col5">0.221</oasis:entry>
         <oasis:entry colname="col6">0.208</oasis:entry>
         <oasis:entry colname="col7">0.203</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>/<inline-formula><mml:math id="M222" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">381.5</oasis:entry>
         <oasis:entry colname="col3">362.3</oasis:entry>
         <oasis:entry colname="col4">372</oasis:entry>
         <oasis:entry colname="col5">350</oasis:entry>
         <oasis:entry colname="col6">352.1</oasis:entry>
         <oasis:entry colname="col7">337.0</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e6339">Vertical profiles of resolved vertical momentum flux in the streamwise (left) and lateral (center) directions and resolved turbulence intensity (right) from the CNBL reference case.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f04.png"/>

        </fig>

      <p id="d2e6348">We show second-order statistics in Fig. <xref ref-type="fig" rid="F4"/>, where we present the vertical momentum flux in the streamwise (<inline-formula><mml:math id="M223" display="inline"><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:math></inline-formula>) and lateral directions (<inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>) and turbulence intensity based on the horizontally averaged wind speed, computed as <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mtext>TKE</mml:mtext><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msqrt><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mrow><mml:mo>〈</mml:mo><mml:mi>S</mml:mi><mml:mo>〉</mml:mo></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:mtext>TKE</mml:mtext><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>〉</mml:mo></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>+</mml:mo><mml:mover accent="true"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>v</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>v</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>〉</mml:mo></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>+</mml:mo><mml:mover accent="true"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>〉</mml:mo></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the resolved turbulence kinetic energy. Again, we find very good agreement with both references. The streamwise flux even shows excellent agreement. We can see the influence of the mismatch in wind direction in the lateral vertical momentum flux, which is slightly too high in the upper region of the boundary layer. The turbulence intensity is slightly higher near the ground than the results from <sc>AMR-Wind</sc>, while the agreement with the results from Berg et al. (2020) is very close. The prominent increase in turbulence intensity at the inversion height observed in <sc>AMR-Wind</sc> is significantly less prominent in our results, even at the same resolution.</p>

      <fig id="F5"><label>Figure 5</label><caption><p id="d2e6500">Vertical profiles of total vertical momentum flux in the streamwise (left) and lateral (center) directions and total turbulence intensity (right).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f05.png"/>

        </fig>

      <p id="d2e6509">To evaluate the performance of the SGS model in more detail, we present the total flux as the sum of resolved and subgrid-scale fluxes <inline-formula><mml:math id="M227" 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:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>e</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><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="false"><mml:mfrac style="text"><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:mrow></mml:math></inline-formula> and the total turbulence intensity <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:msub><mml:mtext>TKE</mml:mtext><mml:mtext>total</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mtext>TKE</mml:mtext><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mo>〈</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>〉</mml:mo></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> in Fig. <xref ref-type="fig" rid="F5"/>. Note that total fluxes are only available from <xref ref-type="bibr" rid="bib1.bibx9" id="text.59"/>. Again, we find very close agreement with the reference data. Only the lateral flux deviates somewhat from the reference results in the upper half of the boundary layer.</p>

      <fig id="F6"><label>Figure 6</label><caption><p id="d2e6622">Horizontal (top) and vertical (bottom) spectra at <inline-formula><mml:math id="M229" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M230" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 37 <inline-formula><mml:math id="M231" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> (left),  <inline-formula><mml:math id="M232" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M233" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 186 <inline-formula><mml:math id="M234" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> (center), and  <inline-formula><mml:math id="M235" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M236" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 333 <inline-formula><mml:math id="M237" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> (right).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f06.png"/>

        </fig>

      <p id="d2e6698">Finally, we compare spatial velocity spectra obtained at three different heights (<inline-formula><mml:math id="M238" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M239" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 37, 186, and 333 <inline-formula><mml:math id="M240" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>) in Fig. <xref ref-type="fig" rid="F6"/>. We compute spectra from horizontal planes following the procedure described in <xref ref-type="bibr" rid="bib1.bibx9" id="text.60"/>. First, we compute the spectral tensors <inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mn mathvariant="normal">11</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mn mathvariant="normal">22</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mn mathvariant="normal">33</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> from the covariance function <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><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:msubsup><mml:mi>u</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E35" content-type="numbered"><label>35</label><mml:math id="M245" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo movablelimits="false">∬</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mover accent="true"><mml:mn mathvariant="normal">1</mml:mn><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">x</mml:mi></mml:msub><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">x</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">y</mml:mi></mml:msub><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">y</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">x</mml:mi></mml:msub><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">y</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M246" display="inline"><mml:mover accent="true"><mml:mn mathvariant="normal">1</mml:mn><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> is the imaginary unit.</p>
      <p id="d2e6984">Then, we compute the ring-averaged energy in horizontal and vertical spectra <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:msubsup><mml:mi>k</mml:mi><mml:mi mathvariant="normal">x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>k</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M250" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E36"><mml:mtd><mml:mtext>36</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mn mathvariant="normal">11</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mn mathvariant="normal">22</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E37"><mml:mtd><mml:mtext>37</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mn mathvariant="normal">33</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e7210">Results are binned into 50 equally sized bins. Wavelengths are normalized with the computed inversion height, and spectra are normalized by <inline-formula><mml:math id="M251" display="inline"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub><mml:msub><mml:mi>u</mml:mi><mml:mo>∗</mml:mo></mml:msub><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:math></inline-formula> and <inline-formula><mml:math id="M252" display="inline"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub><mml:msub><mml:mi>u</mml:mi><mml:mo>∗</mml:mo></mml:msub><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:math></inline-formula>, with <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.54</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">55</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">18</mml:mn><mml:mo>)</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.61</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">55</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">18</mml:mn><mml:mo>)</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn></mml:mrow></mml:math></inline-formula>, in accordance with <xref ref-type="bibr" rid="bib1.bibx9" id="text.61"/>. As a final step, we average the spectra computed from 10 time steps to reduce noise.</p>
      <p id="d2e7339">Our results match the results from <sc>AMR-Wind</sc> very closely at all heights despite the lower resolution. This demonstrates the lower dissipativity of the cumulant LBM compared to finite-volume solvers. At lower wavenumbers there is also very good agreement with the results from <xref ref-type="bibr" rid="bib1.bibx9" id="text.62"/>. At high wavenumbers, the LBM is more dissipative than the pseudospectral solver. Close to the inversion height, the small wavenumbers are lower due to the capping inversion, and a characteristic hump is visible in the vertical spectra, which we could accurately reproduce with our solver.</p>
      <p id="d2e7348">Overall we find very good agreement in all examined quantities with the reference data, even at lower resolutions. In general, the accuracy of the model is positioned between the two reference models. The newly developed surface boundary condition is able to model the wall region accurately in neutral conditions.</p>
      <p id="d2e7352">Our simulations were carried out using a single NVidia RTX A6000 GPU on a workstation computer. Simulating 1.225 <inline-formula><mml:math id="M256" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>5</sup> <inline-formula><mml:math id="M258" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> with grid B required 2.7 <inline-formula><mml:math id="M259" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>4</sup> <inline-formula><mml:math id="M261" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> of wall time, while the simulation of grid C ran for 4.3 <inline-formula><mml:math id="M262" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>5</sup> <inline-formula><mml:math id="M264" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, which is approximately a 16-fold increase as expected. Hence, we are able to run full boundary layer simulations using a workstation computer of the order of real time. Further details of the computational efficiency when scaled to multiple GPUs can be found in Appendix <xref ref-type="sec" rid="App1.Ch1.S4"/>. Compared to isothermal simulations on the same hardware, the computational speed is reduced by around 26 % due to the double-distribution approach, which essentially doubles the memory accessed per node as well as the additional models for Coriolis and buoyancy forces. Future work will combine the different forces and collision kernels to minimize memory access and increase computational efficiency.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Stably stratified boundary layer</title>
      <p id="d2e7438">To examine the performance of our model in stable boundary layer simulations, we compare it with the well-known GABLS1 benchmark <xref ref-type="bibr" rid="bib1.bibx8" id="paren.63"/>. The domain has an extent of 400 <inline-formula><mml:math id="M265" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M266" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 400 <inline-formula><mml:math id="M267" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M268" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 400 <inline-formula><mml:math id="M269" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, with periodic boundaries in the streamwise and lateral directions. The geostrophic wind is set to 8 <inline-formula><mml:math id="M270" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and the Coriolis parameter to 1.39 <inline-formula><mml:math id="M271" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−4</sup> <inline-formula><mml:math id="M273" display="inline"><mml:mrow class="unit"><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The domain is initialized with a constant velocity equal to the geostrophic wind and a two-layered temperature profile. The lowest 100 <inline-formula><mml:math id="M274" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> is initialized with a constant temperature <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M276" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 265 <inline-formula><mml:math id="M277" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi></mml:mrow></mml:math></inline-formula>, above which sits an inversion layer with a temperature gradient of 0.01 <inline-formula><mml:math id="M278" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. In the lowest 50 <inline-formula><mml:math id="M279" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, the temperature is superimposed with random fluctuations with an amplitude of 0.1 <inline-formula><mml:math id="M280" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi></mml:mrow></mml:math></inline-formula>. The surface temperature is also initialized with <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and a constant cooling rate of 0.25 <inline-formula><mml:math id="M282" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">h</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is applied.  The roughness length is set to <inline-formula><mml:math id="M283" 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> <inline-formula><mml:math id="M284" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.1 <inline-formula><mml:math id="M285" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>. The reference temperature is set to 263.5 <inline-formula><mml:math id="M286" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">K</mml:mi></mml:mrow></mml:math></inline-formula>, density to 1.3223 <inline-formula><mml:math id="M287" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">kg</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, and gravity to 9.81 <inline-formula><mml:math id="M288" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. A Rayleigh damping layer is used at the top, with the damping factor set to 1.6 <inline-formula><mml:math id="M289" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup> <inline-formula><mml:math id="M291" display="inline"><mml:mrow class="unit"><mml:mn mathvariant="normal">1</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. We apply the same boundary conditions as in the previous case, but now the surface temperature is prescribed in the surface layer boundary condition. The total simulated time is 9 <inline-formula><mml:math id="M292" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">h</mml:mi></mml:mrow></mml:math></inline-formula>, and averages are computed over the last hour. We simulate two grids, one with <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M294" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2 <inline-formula><mml:math id="M295" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> and a finer resolution of <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M297" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M298" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e7797">We compare our results to data from the original benchmark and a later publication by <xref ref-type="bibr" rid="bib1.bibx15" id="text.64"/>. In the original paper, a number of different models are compared, with a large variety of formulations. <xref ref-type="bibr" rid="bib1.bibx15" id="text.65"/> employ a pseudospectral discretization in horizontal directions and second-order finite differences in the vertical direction and Adam–Bashforth time stepping. They compare  three different turbulence models, the Smagorinsky model, the AMD model, and the Lagrangian-averaged scale-dependent model (LASD) <xref ref-type="bibr" rid="bib1.bibx10" id="paren.66"/>. We compare our results only to the results obtained with the Smagorinsky and LASD models since the results differ only marginally between LASD and AMD. <xref ref-type="bibr" rid="bib1.bibx15" id="text.67"/> conduct all simulations at an isotropic resolution of 2.08 <inline-formula><mml:math id="M299" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F7"><label>Figure 7</label><caption><p id="d2e7822">Instantaneous velocity and temperature fields at <inline-formula><mml:math id="M300" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M301" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 200 <inline-formula><mml:math id="M302" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> of simulations of the GABLS1 reference case with both resolutions at <inline-formula><mml:math id="M303" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M304" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 9 <inline-formula><mml:math id="M305" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">h</mml:mi></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f07.png"/>

        </fig>

      <p id="d2e7877">As with the previous case, we first show an instantaneous view of the simulation in Fig. <xref ref-type="fig" rid="F7"/>. The capping inversion is clearly visible in the velocity field, exhibiting a super geostrophic wind and high veer. Above the inversion, a clear reduction in turbulence can be observed. At the higher resolution the transition from boundary layer to free atmosphere is sharper, which is discussed in more detail later on. The temperature field shows a stable stratification and the presence of a strong capping inversion.</p>

      <fig id="F8"><label>Figure 8</label><caption><p id="d2e7884">Planar-averaged first- and second-order statistics of the GABLS1 reference case. From left to right: wind speed and lateral velocity, temperature, total momentum fluxes, and total vertical temperature flux. The area covered by all results at 2 <inline-formula><mml:math id="M306" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> resolution from <xref ref-type="bibr" rid="bib1.bibx8" id="text.68"/> is shown as a blue-shaded area.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f08.png"/>

        </fig>

      <p id="d2e7904">We show profiles of horizontally averaged quantities of simulating the GABLS1 reference case in Fig. <xref ref-type="fig" rid="F8"/>. The wind speed below the inversion agrees well with the reference data in both cases. The case with lower resolution exhibits a significantly lower velocity gradient than the higher-resolution case. This is in line with findings from <xref ref-type="bibr" rid="bib1.bibx8" id="text.69"/>, where simulations at a lower resolution also exhibited this behavior. At the higher resolution, our results match those of <xref ref-type="bibr" rid="bib1.bibx15" id="text.70"/> closely. We find higher negative veer in the inversion layer compared to <xref ref-type="bibr" rid="bib1.bibx15" id="text.71"/>, particularly at higher resolution, which also results in higher wind speed in that region. However, there seems to be only a very limited effect on the flow in the boundary layer. The temperature profile at the lower resolution agrees well with the reference data within the boundary layer. In the inversion layer the gradient is slightly lower than that of <xref ref-type="bibr" rid="bib1.bibx15" id="text.72"/> but still well within the range of results from <xref ref-type="bibr" rid="bib1.bibx8" id="text.73"/>. At the higher resolution we find very good agreement. The vertical momentum fluxes agree very well with the reference results. Only results from <xref ref-type="bibr" rid="bib1.bibx15" id="text.74"/> are available. The vertical temperature fluxes give a similar picture, although they are slightly smaller than the reference data. Furthermore, there exists a small hump in the results from the case with lower resolution. We believe this is connected to the velocity profile, where the top of the inversion had a significantly lower gradient.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e7931">Friction velocity, boundary layer height, and buoyancy flux of the GABLS1 case.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right" colsep="1"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right" colsep="1"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Quantity</oasis:entry>
         <oasis:entry rowsep="1" namest="col2" nameend="col3" align="center" colsep="1"><sc>VirtualFluids</sc></oasis:entry>
         <oasis:entry rowsep="1" namest="col4" nameend="col5" align="center" colsep="1">Beare et al. (2006) </oasis:entry>
         <oasis:entry rowsep="1" namest="col6" nameend="col7" align="center">Gadde et al. (2021) </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M308" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2 <inline-formula><mml:math id="M309" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M311" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M312" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M314" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2 <inline-formula><mml:math id="M315" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M316" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M317" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M318" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6">Smag.</oasis:entry>
         <oasis:entry colname="col7">LASD</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M319" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>∗</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>/<inline-formula><mml:math id="M320" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.27</oasis:entry>
         <oasis:entry colname="col3">0.26</oasis:entry>
         <oasis:entry colname="col4">0.24–0.28</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">0.265</oasis:entry>
         <oasis:entry colname="col7">0.253</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M321" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>/<inline-formula><mml:math id="M322" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">179</oasis:entry>
         <oasis:entry colname="col3">162</oasis:entry>
         <oasis:entry colname="col4">162–197</oasis:entry>
         <oasis:entry colname="col5">149–164</oasis:entry>
         <oasis:entry colname="col6">166</oasis:entry>
         <oasis:entry colname="col7">166</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M323" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi>g</mml:mi><mml:mo>〈</mml:mo><mml:mi>w</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>〉</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>/<inline-formula><mml:math id="M324" display="inline"><mml:mrow class="unit"><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">4.05</oasis:entry>
         <oasis:entry colname="col3">3.66</oasis:entry>
         <oasis:entry colname="col4">3.5–4.7</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">4.1</oasis:entry>
         <oasis:entry colname="col7">3.8</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e8256">A comparison of some quantities of interest is shown in Table <xref ref-type="table" rid="T2"/>. Note that the friction velocity and buoyancy flux are computed from the total fluxes at the second node since this is the node we use as the exchange location for the wall model. We compute the boundary layer height <inline-formula><mml:math id="M325" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> with the same method used in the references. We first find the height <inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn mathvariant="normal">0.05</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> at which the shear stress <inline-formula><mml:math id="M327" display="inline"><mml:msqrt><mml:mrow><mml:mo>(</mml:mo><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:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>v</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:math></inline-formula> is less than 5 % of the wall shear stress and extrapolate by <inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn mathvariant="normal">0.05</mml:mn></mml:msub></mml:mrow><mml:mn mathvariant="normal">0.95</mml:mn></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e8343">The friction velocity and buoyancy flux are well within the range of the reference results. This indicates that our wall-modeling approach and boundary condition yield accurate results. The boundary layer height decreases with increasing resolution, as was also observed in <xref ref-type="bibr" rid="bib1.bibx8" id="text.75"/>.</p>
      <p id="d2e8349">To examine the performance of the new boundary condition in more detail, we show the time evolution of friction velocity and buoyancy flux in Fig. <xref ref-type="fig" rid="F9"/>. In the initial seconds of the simulation, both quantities exhibit large spikes. The friction velocity first decreases quickly as a boundary layer develops, decreasing shear in the lowest part of the domain. The surface heat flux increases in magnitude as the surface cools, and thus the temperature gradient near the surface increases. Both quantities stabilize towards the end of the simulation, indicating that the simulation has reached a state of equilibrium. This behavior is qualitatively similar to the results reported in <xref ref-type="bibr" rid="bib1.bibx8" id="text.76"/> and <xref ref-type="bibr" rid="bib1.bibx46" id="text.77"/>. Despite varying formulations, different approaches yield similar results near the equilibrium state of the boundary layer.</p>

      <fig id="F9"><label>Figure 9</label><caption><p id="d2e8362">Time evolution of friction velocity and buoyancy flux of the GABLS1 reference case.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f09.png"/>

        </fig>

      <p id="d2e8371">It is worth noting that the reference results also yield a large variation in all predicted quantities, as noted by other studies comparing to this case, e.g., <xref ref-type="bibr" rid="bib1.bibx49" id="text.78"/> and <xref ref-type="bibr" rid="bib1.bibx46" id="text.79"/>. Generally, our results within the boundary layer fall well within the range of the results obtained by other solvers, despite the differences in approach, subgrid-scale models, etc. At the top of the boundary layer, our model requires higher resolution than most other solvers to accurately represent the capping inversion. We believe this is caused by the model not representing the temperature gradient accurately enough. One way to improve the model is to further refine the collision operator of the advection–diffusion LBM. In a comparison of different advection–diffusion collision operators, <xref ref-type="bibr" rid="bib1.bibx21" id="text.80"/> found a two-relaxation time central moment operator to be more accurate than the central moment operator most similar to the one employed here. By introducing more relaxation times, leading-order error terms can be canceled out, and accuracy of the collision operator can be improved, as was done, for example, in <xref ref-type="bibr" rid="bib1.bibx18" id="text.81"/>.</p>
</sec>
</sec>
<sec id="Ch1.S4" sec-type="conclusions">
  <label>4</label><title>Conclusions</title>
      <p id="d2e8395">This paper presents a novel method for conducting large-eddy simulation of thermally stratified atmospheric boundary layers using the double-distribution function (DDF) lattice Boltzmann method (LBM) in a GPU-resident solver. Very few applications of the LBM to stratified atmospheric boundary layers have been presented in the literature so far, and this work comprises the first application of a DDF approach to such flows in conjunction with employing GPUs. We give a thorough description of our methodology for the simulation of the bulk flow, present a novel boundary condition to use a combined wall model for wall shear stress and heat flux prescribed by Monin–Obukhov similarity theory, and present other models implemented in the GPU-resident LBM solver <sc>VirtualFluids</sc> in order to simulate stratified atmospheric boundary layers, including horizontally averaged buoyancy, Coriolis force, and Rayleigh damping layer.</p>
      <p id="d2e8401">We test our model in simulations of conventionally neutral and stably stratified boundary layers. Simulations of the conventionally neutral boundary layer agree very well with reference data obtained with both pseudospectral and finite-volume methods. At a coarse resolution of 7 <inline-formula><mml:math id="M329" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, the inversion layer can not be represented accurately. At a finer resolution of 3.5 <inline-formula><mml:math id="M330" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, the results match closely with the reference data at twice the resolution obtained with pseudospectral and finite-volume methods. Second-order statistics also agree very well. The spectra obtained at three heights show that the LBM exhibits excellent spectral properties and has lower diffusion than the finite-volume solver at higher resolution. Damping of vertical motions near the inversion layer is also clearly present.</p>
      <p id="d2e8420">Simulations of the stably stratified GABLS1 reference case also yield satisfactory results. The proposed boundary condition is able to properly reproduce the friction velocity and buoyancy flux at the wall. The boundary layer height agrees with results obtained at the same resolution.</p>
      <p id="d2e8423">A general shortcoming of the model is its inability to correctly reproduce the direction of the geostrophic wind, and this discrepancy grows with increasing resolution. However, we find that this does not affect the results in the boundary layer, and the misalignment is small. Overall, we achieve satisfactory accuracy for both cases. The method exhibits the expected behavior, generally being more accurate than a second-order finite-volume method, but not as accurate as a pseudospectral approach.</p>
      <p id="d2e8427">The present model exhibits excellent computational efficiency. All simulations, even the highly resolved neutral boundary layer with <inline-formula><mml:math id="M331" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 140 million nodes, are carried out on a single graphics card. At a coarse resolution of <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M333" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 7 <inline-formula><mml:math id="M334" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, the simulation is carried out 4.5 times faster than real time. Increasing resolution to <inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M336" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3.5 <inline-formula><mml:math id="M337" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> results in a simulation at 0.28 real time.</p>
      <p id="d2e8488">This article comprises a model for an empty boundary layer with flat terrain. Future work will focus on implementing a precursor–successor setup to simulate wind farms. One of the limitations of our model is that the surface layer boundary condition is only formulated for straight walls. As noted by <xref ref-type="bibr" rid="bib1.bibx6" id="text.82"/>, an extension of the inverse momentum exchange method is possible but not available as of yet. Nevertheless, this work represents an important step for the lattice Boltzmann method and CFD in general towards simulations of stratified boundary layers while fully leveraging the computational efficiency of GPUs. It represents one of the most cost-effective and fastest methods available to conduct LES of such complexity. The reduction in computational cost benefits researchers in many ways, from reducing development time to enabling larger parameter studies. Furthermore, a reduction in computational cost is crucial for enabling industrial application of LES, for example in the wind energy sector. That way, manufacturers, developers, and operators can take into account the complex behavior of the atmospheric boundary layer and reduce model uncertainties, ultimately reducing the cost of electricity.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Unsuccessful preliminary studies</title>
      <p id="d2e8506">The development of this model was rich with paths that led us nowhere, as is often the case when developing a new model. We want to record some of those paths in the hope that others might learn to either avoid those paths or will see where we went wrong and will be able to tell us what we should have done instead.</p>
<sec id="App1.Ch1.S1.SS1">
  <label>A1</label><title>Hybrid finite-difference scheme</title>
      <p id="d2e8516">We first tried to implement a hybrid solver by using finite differences for the advection–diffusion problem. The hybrid method has a number of benefits. The finite-difference approach is much simpler and much more well known; hence there is also more literature on the topic. Furthermore, it requires significantly less memory while also yielding higher computational performance. Hence it is used in a number of other thermal LBM models, for example <xref ref-type="bibr" rid="bib1.bibx43" id="text.83"/> and <xref ref-type="bibr" rid="bib1.bibx14" id="text.84"/>. Results for the canonical test cases looked very promising, so we decided to pursue this direction further. However, when we simulated the atmospheric boundary layer, we could never avoid spurious oscillations that ultimately degraded the simulation, particularly at the top of the inversion layer. We implemented a variety of approaches, beginning with central differences and Euler forward time stepping. We refined our approach, using a variety of different finite-difference schemes, such as the second-order upwind scheme, the MUSCL scheme <xref ref-type="bibr" rid="bib1.bibx50" id="paren.85"/>, the QUICK and QUICKEST schemes <xref ref-type="bibr" rid="bib1.bibx34" id="paren.86"/>, and the mixed fourth-order central difference and QUICK schemes. We also tried a second-order Adam–Bashforth time integration but all to no avail. At this point we pivoted to a DDF approach that was already implemented in <sc>VirtualFluids</sc> since adding even higher-order approaches did not seem promising. As of yet it is unclear what the differences were in our approach compared to, for example, the model implemented in <sc>ProLB</sc> <xref ref-type="bibr" rid="bib1.bibx14" id="paren.87"/>. On the one hand, we use a much less diffusive collision operator; thus oscillations are not damped as much. On the other hand, no other study actually simulates a capping inversion, where the oscillations originated from our simulations. Furthermore, there is very little literature concerning this issue. We speculate that the instabilities occur due to the differences in stencil/lattice. The lattice Boltzmann method only accesses the direct neighbors, while all the higher-order methods require information from the second neighbor as well; thus information can travel at different speeds. As this was not the aim of this work, we did not explore this direction further.</p>
</sec>
<sec id="App1.Ch1.S1.SS2">
  <label>A2</label><title>Reference temperature</title>
      <p id="d2e8549">To improve the numerical precision, the populations <inline-formula><mml:math id="M338" display="inline"><mml:mrow><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are set so that <inline-formula><mml:math id="M339" 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">m</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>∑</mml:mo><mml:msub><mml:mi>g</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. The choice of the reference temperature <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is crucial to improve the accuracy of the simulation. A naïve choice would be to either set it to the reference temperature <inline-formula><mml:math id="M341" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> or the surface temperature <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>; however we found that oscillations tended to originate from areas where the temperature is far away from <inline-formula><mml:math id="M343" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. We found that the best choice was usually to set <inline-formula><mml:math id="M344" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to a value of the temperature in the inversion layer.</p>
</sec>
</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Boundary condition fluid</title>
      <p id="d2e8662">We set a slip boundary condition using a similar method to the one used to set the flux boundary condition. At the uppermost fluid node, we compute the velocity from Eq. (<xref ref-type="disp-formula" rid="Ch1.E7"/>) and then compute the tangential velocity with

          <disp-formula id="App1.Ch1.S2.E38" content-type="numbered"><label>B1</label><mml:math id="M345" display="block"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e8709">Then we apply the bounce-back rule:

          <disp-formula id="App1.Ch1.S2.E39" content-type="numbered"><label>B2</label><mml:math id="M346" display="block"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e8790">At the bottom boundary we employ the iMEM approach from <xref ref-type="bibr" rid="bib1.bibx6" id="text.88"/>. We want to give a few clarifications and correct some misprints in the original publication. Recall that the momentum transferred from <italic>the fluid to the wall</italic> is

          <disp-formula id="App1.Ch1.S2.E40" content-type="numbered"><label>B3</label><mml:math id="M347" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e8867">Hence, the total force exerted onto the wall by the fluid is

          <disp-formula id="App1.Ch1.S2.E41" content-type="numbered"><label>B4</label><mml:math id="M348" display="block"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi></mml:mrow></mml:munder><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        where <inline-formula><mml:math id="M349" display="inline"><mml:mi mathvariant="normal">Γ</mml:mi></mml:math></inline-formula> is the set of all links cutting the wall. From the wall model we compute the force acting on the wall from the wall shear stress

          <disp-formula id="App1.Ch1.S2.E42" content-type="numbered"><label>B5</label><mml:math id="M350" display="block"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msubsup><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e8966">We now seek a wall velocity <inline-formula><mml:math id="M351" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> such that the bounce-back rule in Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S2.E39"/>) results in the correct force. To that end, we split the force into two components, the force due to the population and due to the wall velocity, <inline-formula><mml:math id="M352" display="inline"><mml:mrow><mml:msup><mml:mi>F</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M353" display="inline"><mml:mrow><mml:msup><mml:mi>F</mml:mi><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>:

              <disp-formula specific-use="align" content-type="numbered"><mml:math id="M354" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S2.E43"><mml:mtd><mml:mtext>B6</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi></mml:mrow></mml:munder><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S2.E44"><mml:mtd><mml:mtext>B7</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi></mml:mrow></mml:munder><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi mathvariant="italic">ι</mml:mi><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e9220">Thus, <inline-formula><mml:math id="M355" display="inline"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, resulting in a system of equations that needs to be solved for <inline-formula><mml:math id="M356" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. For the case of a straight wall at the bottom, the solution is

          <disp-formula id="App1.Ch1.S2.E45" content-type="numbered"><label>B8</label><mml:math id="M357" display="block"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>t</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:msubsup><mml:mi>F</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:msubsup><mml:mi>F</mml:mi><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>F</mml:mi><mml:mn mathvariant="normal">3</mml:mn><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>Convergence study</title>
      <p id="d2e9369">To determine the order of convergence of the advection–diffusion equation numerically, we simulate the advection–diffusion of a Gaussian hill of concentration. Note that in this case, <inline-formula><mml:math id="M358" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> is a passive scalar. The initial field of concentration <inline-formula><mml:math id="M359" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> is described by <xref ref-type="bibr" rid="bib1.bibx28" id="text.89"><named-content content-type="post">p. 322</named-content></xref>:

          <disp-formula id="App1.Ch1.S3.E46" content-type="numbered"><label>C1</label><mml:math id="M360" display="block"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>exp⁡</mml:mi><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mfenced open="|" close="|"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>

      <fig id="FC1"><label>Figure C1</label><caption><p id="d2e9453">Analytical solution for the concentration in the test case of a Gaussian hill of concentration, projected onto the <inline-formula><mml:math id="M361" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M362" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> plane. In the white region concentration <inline-formula><mml:math id="M363" display="inline"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>≤</mml:mo></mml:mrow></mml:math></inline-formula> 1 <inline-formula><mml:math id="M364" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup>.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f10.png"/>

      </fig>

      <fig id="FC2"><label>Figure C2</label><caption><p id="d2e9507">Maximum error <inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow></mml:math></inline-formula> of the numerical results of simulating the advection–diffusion of a Gaussian hill of concentration.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f11.png"/>

      </fig>

      <fig id="FC3"><label>Figure C3</label><caption><p id="d2e9529">Absolute difference between analytical and numerical solution of the Gaussian hill of concentration at <inline-formula><mml:math id="M367" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>end</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. The top row shows the case with <inline-formula><mml:math id="M368" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and the bottom row the case with <inline-formula><mml:math id="M369" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. Resolution increases from left to right.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f12.png"/>

      </fig>

      <p id="d2e9580">Under a constant advection velocity <inline-formula><mml:math id="M370" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula>,

          <disp-formula id="App1.Ch1.S3.E47" content-type="numbered"><label>C2</label><mml:math id="M371" display="block"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>exp⁡</mml:mi><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mfenced close="|" open="|"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></disp-formula>

        is a solution for the advection–diffusion equation

          <disp-formula id="App1.Ch1.S3.E48" content-type="numbered"><label>C3</label><mml:math id="M372" display="block"><mml:mrow><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>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><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 mathvariant="bold-italic">x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">Pe</mml:mi></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        with <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>D</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>D</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula>, the Peclét number <inline-formula><mml:math id="M374" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>U</mml:mi></mml:mrow><mml:mi>D</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M375" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:mi>U</mml:mi></mml:mrow></mml:math></inline-formula>. We conduct a convergence study for a diffusion-dominated problem (<inline-formula><mml:math id="M376" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>) and an advection-dominated problem (<inline-formula><mml:math id="M377" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><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>). We vary <inline-formula><mml:math id="M378" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>/</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</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:mo>,</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula>, while we keep <inline-formula><mml:math id="M379" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M380" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> constant. In the case of <inline-formula><mml:math id="M381" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, we set the diffusivity in lattice units <inline-formula><mml:math id="M382" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>D</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>D</mml:mi><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.01</mml:mn></mml:mrow></mml:math></inline-formula>, and we simulate until <inline-formula><mml:math id="M383" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>end</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.3</mml:mn><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mi>U</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula> is reached. In the case of <inline-formula><mml:math id="M384" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><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>, <inline-formula><mml:math id="M385" display="inline"><mml:mover accent="true"><mml:mi>D</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> <inline-formula><mml:math id="M386" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M387" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−5</sup> and <inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>end</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mi>U</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>. In both cases the domain has a size of <inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:mn mathvariant="normal">18</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>×</mml:mo><mml:mn mathvariant="normal">18</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>×</mml:mo><mml:mn mathvariant="normal">18</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. To optimally utilize the simulation domain, we set <inline-formula><mml:math id="M391" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>end</mml:mtext></mml:msub><mml:mi>U</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>. The analytical solutions for both Peclét numbers at <inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M393" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>end</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are shown in Fig. <xref ref-type="fig" rid="FC1"/>. The results of the convergence test for both Peclét numbers can be found in Fig. <xref ref-type="fig" rid="FC2"/>. The results clearly show a convergence rate slightly above second order in both cases, as expected. More precisely, we compute a convergence rate of 2.5 and 2.2 for <inline-formula><mml:math id="M394" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M395" display="inline"><mml:mrow><mml:mi mathvariant="italic">Pe</mml:mi><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>, respectively. A more detailed view of the error can be found in Fig. <xref ref-type="fig" rid="FC3"/>, where we show the absolute difference between the analytical and numerical solution. We see that in both cases, errors decrease with higher resolution and that the error is symmetric in the diffusion-dominated case, while the advection case exhibits errors aligned with the direction of advection. We also see that errors become negligibly small towards the boundaries of the domain, so the domain was chosen to be large enough to not affect the results.</p>
</app>

<app id="App1.Ch1.S4">
  <label>Appendix D</label><title>Scaling study</title>

<table-wrap id="TD1"><label>Table D1</label><caption><p id="d2e10202"><inline-formula><mml:math id="M396" display="inline"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>wall</mml:mtext></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>sim</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:math></inline-formula> for all cases of the scaling study.</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:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Number of GPUs</oasis:entry>
         <oasis:entry colname="col2">1</oasis:entry>
         <oasis:entry colname="col3">2</oasis:entry>
         <oasis:entry colname="col4">4</oasis:entry>
         <oasis:entry colname="col5">8</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Weak scaling</oasis:entry>
         <oasis:entry colname="col2">1.81</oasis:entry>
         <oasis:entry colname="col3">2.03</oasis:entry>
         <oasis:entry colname="col4">2.12</oasis:entry>
         <oasis:entry colname="col5">2.12</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Strong scaling</oasis:entry>
         <oasis:entry colname="col2">1.81</oasis:entry>
         <oasis:entry colname="col3">1.09</oasis:entry>
         <oasis:entry colname="col4">0.63</oasis:entry>
         <oasis:entry colname="col5">0.55</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Strong scaling reference</oasis:entry>
         <oasis:entry colname="col2">1.81</oasis:entry>
         <oasis:entry colname="col3">0.92</oasis:entry>
         <oasis:entry colname="col4">0.45</oasis:entry>
         <oasis:entry colname="col5">0.23</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e10314">We conduct both a weak and a strong scaling study of the model based on the neutrally stratified test case with grid C (<inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M398" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3.5 <inline-formula><mml:math id="M399" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>). However, we want to emphasize that the model in its current state has not yet been optimized for performance and not at all for multi-GPU performance. These improvements will be a topic of future studies.</p>
      <p id="d2e10342">The study is conducted on the Dardel supercomputer from 1 to 8 GPUs. Each node has 4 Nvidia GH200 Grace Hopper superchips with 120 <inline-formula><mml:math id="M400" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">GB</mml:mi></mml:mrow></mml:math></inline-formula> memory each. The domain is partitioned into equally sized subdomains along the streamwise direction. This was found to be the optimal partitioning strategy for this case. Each case is run for 100 <inline-formula><mml:math id="M401" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> of simulation time, and the wall time <inline-formula><mml:math id="M402" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>wall</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> of the longest-running process is recorded. On a single GPU, the domain has a size of 3060 <inline-formula><mml:math id="M403" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M404" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 3600 <inline-formula><mml:math id="M405" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> to fully use the available memory of the card.</p>
      <p id="d2e10397">For the weak scaling study we simply extended the domain to 7200 <inline-formula><mml:math id="M406" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M407" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 3600 <inline-formula><mml:math id="M408" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, 7200 <inline-formula><mml:math id="M409" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M410" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 7200 <inline-formula><mml:math id="M411" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, and 14 400 <inline-formula><mml:math id="M412" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M413" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 7200 <inline-formula><mml:math id="M414" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> for 2, 4, and 8 GPUs, respectively. The reference wall time <inline-formula><mml:math id="M415" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>wall</mml:mtext><mml:mo>,</mml:mo><mml:mtext>ref</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> for all simulations is the wall time of the single-GPU case.</p>
      <p id="d2e10486">In the strong scaling study, we partition the same domain into smaller and smaller subdomains. However, if the subdomain becomes too small, the GPU is not saturated any more, and the parallel efficiency decreases. We therefore ran a reference case for each case of the scaling study where the domain had the same size as one subdomain and use the wall time of that case as <inline-formula><mml:math id="M416" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>wall</mml:mtext><mml:mo>,</mml:mo><mml:mtext>ref</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. By normalizing in this manner, ideal scaling corresponds to a constant ratio of <inline-formula><mml:math id="M417" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mtext>wall</mml:mtext><mml:mo>,</mml:mo><mml:mtext>ref</mml:mtext></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>wall</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e10528">The wall time for each case can be found in Table <xref ref-type="table" rid="TD1"/>, and the results of both scaling studies are shown in Fig. <xref ref-type="fig" rid="FD1"/>.</p>

      <fig id="FD1"><label>Figure D1</label><caption><p id="d2e10537">Results of the strong and weak scaling study from 1 to 8 GPUs.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2567/2026/wes-11-2567-2026-f13.png"/>

      </fig>

      <p id="d2e10546">The weak scaling efficiency of the model is already good. Even at 8 GPUs the efficiency is still at 85 %, indicating that the model is suitable for large-scale computation. We also find that the efficiency does not noticeably decrease from 4 to 8 GPUs. We observe that the model does not scale as well in the strong scaling study. On the one hand, this can be explained simply by the square-cube law; i.e., the volume of the subdomains shrinks faster than the surface. The communication hiding implemented in <sc>VirtualFluids</sc> becomes less effective for smaller subdomains; see <xref ref-type="bibr" rid="bib1.bibx20" id="text.90"/>. This  problem is exacerbated due to the planar averaging in Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>), which also requires inter-GPU communication and becomes less efficient when partitioned along the streamwise direction. Nevertheless, the efficiency is still around 35 %. Comparing these results with <xref ref-type="bibr" rid="bib1.bibx37" id="text.91"/>, we find that our model has comparable scaling efficiency in the weak scaling study, although we use significantly fewer GPUs.</p>
</app>

<app id="App1.Ch1.S5">
  <label>Appendix E</label><title>Unit conversion in LBM and its effect on small forces</title>
      <p id="d2e10568">The LBM relies on non-dimensionalizing all quantities with grid size <inline-formula><mml:math id="M418" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula>, time step size <inline-formula><mml:math id="M419" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, and reference density <inline-formula><mml:math id="M420" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. Furthermore, recall that <inline-formula><mml:math id="M421" display="inline"><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:mrow><mml:msqrt><mml:mn mathvariant="normal">3</mml:mn></mml:msqrt><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mtext>Ma</mml:mtext></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, which we have kept constant. Thus, velocities in SI units are scaled as <inline-formula><mml:math id="M422" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>u</mml:mi><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">u</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M423" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">u</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mtext>const</mml:mtext></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M424" display="inline"><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula> is the velocity in LB units. Forces, however, are scaled as <inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>f</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>f</mml:mi><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M426" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>t</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx28" id="paren.92"><named-content content-type="post">Chap. 7</named-content></xref>. Therefore, non-dimensionalized forces decrease with grid spacing. In the cumulant LBM, forces are only applied via Eq. (<xref ref-type="disp-formula" rid="Ch1.E7"/>) <xref ref-type="bibr" rid="bib1.bibx17" id="paren.93"/>. Therefore, the result of the addition becomes less accurate with increasing resolution, since the contribution of the force can not be represented in finite-precision floating point numbers. This becomes particularly important for small forces, such as the Coriolis force, and when using single-precision floating point numbers. We have tried the Kahan summation algorithm <xref ref-type="bibr" rid="bib1.bibx23" id="paren.94"/> as a remedy but that did not improve the results.</p>
</app>
  </app-group><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e10803"><sc>VirtualFluids</sc> is available as open-source code at <uri>https://git.rz.tu-bs.de/irmb/VirtualFluids</uri> (last access: 15 July 2026). The model described in this paper is published in version 0.3.0 (<xref ref-type="bibr" rid="bib1.bibx31" id="altparen.95"/>, <ext-link xlink:href="https://doi.org/10.5281/zenodo.20681486" ext-link-type="DOI">10.5281/zenodo.20681486</ext-link>). The data for creating the plots in Sect. <xref ref-type="sec" rid="Ch1.S3"/> and the corresponding postprocessing scripts are available at <uri>https://source.coderefinery.org/wind_energy_uu/stratificationinlbm</uri> (last access: 15 July 2026). A permanent record is kept at <ext-link xlink:href="https://doi.org/10.5281/zenodo.20512678" ext-link-type="DOI">10.5281/zenodo.20512678</ext-link> <xref ref-type="bibr" rid="bib1.bibx26" id="paren.96"/>.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e10832">HK, HA, and SI conceptualized the project. HK, HA, MG, and MS developed the methodology and implemented the code. HK conducted the simulations and the postprocessing under the guidance of HA and SI. HK prepared the original draft, and all authors reviewed and edited the paper. SI acquired the resources and supervised the project.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e10838">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="d2e10844">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e10850">HK would like to thank Antonio Salvini, Luca Lanzilao, and Hugo Olivares-Espinosa for their helpful discussions and Lawrence Cheung and Gopal Yalla for their help with the results from the Exawind benchmark. Some of the computations were enabled by resources provided by the National Academic Infrastructure for Supercomputing in Sweden (NAISS), partially funded by the Swedish Research Council through grant agreement no. 2022-06725.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e10855">The publication of this article was funded by the Swedish Research Council, Forte, Formas, and Vinnova.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e10861">This paper was edited by Sukanta Basu and reviewed by three anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Abkar and Porté-Agel(2015)</label><mixed-citation>Abkar, M. and Porté-Agel, F.: Influence of Atmospheric Stability on Wind-Turbine Wakes: A Large-Eddy Simulation Study, Phys. Fluids, 27, 035104, <ext-link xlink:href="https://doi.org/10.1063/1.4913695" ext-link-type="DOI">10.1063/1.4913695</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Abkar et al.(2016)Abkar, Bae, and Moin</label><mixed-citation>Abkar, M., Bae, H. J., and Moin, P.: Minimum-Dissipation Scalar Transport Model for Large-Eddy Simulation of Turbulent Flows, Phys. Rev. Fluids, 1, 041701, <ext-link xlink:href="https://doi.org/10.1103/PhysRevFluids.1.041701" ext-link-type="DOI">10.1103/PhysRevFluids.1.041701</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Alihussein et al.(2021)Alihussein, Geier, and Krafczyk</label><mixed-citation>Alihussein, H., Geier, M., and Krafczyk, M.: A Parallel Coupled Lattice Boltzmann-Volume of Fluid Framework for Modeling Porous Media Evolution, Materials, 14, 2510, <ext-link xlink:href="https://doi.org/10.3390/ma14102510" ext-link-type="DOI">10.3390/ma14102510</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Allaerts and Meyers(2017)</label><mixed-citation>Allaerts, D. and Meyers, J.: Boundary-Layer Development and Gravity Waves in Conventionally Neutral Wind Farms, J. Fluid Mech., 814, 95–130, <ext-link xlink:href="https://doi.org/10.1017/jfm.2017.11" ext-link-type="DOI">10.1017/jfm.2017.11</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Arya(2001)</label><mixed-citation> Arya, S. P.: Introduction to Micrometeorology, 2nd edn., vol. 79 of International Geophysics Series, Academic Press, San Diego, ISBN 0-12-059354-8, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Asmuth et al.(2021)Asmuth, Janßen, Olivares-Espinosa, and Ivanell</label><mixed-citation>Asmuth, H., Janßen, C. F., Olivares-Espinosa, H., and Ivanell, S.: Wall-Modeled Lattice Boltzmann Large-Eddy Simulation of Neutral Atmospheric Boundary Layers, Phys. Fluids, 33, 105111, <ext-link xlink:href="https://doi.org/10.1063/5.0065701" ext-link-type="DOI">10.1063/5.0065701</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Basu et al.(2008)Basu, Holtslag, Van De Wiel, Moene, and Steeneveld</label><mixed-citation>Basu, S., Holtslag, A. A. M., Van De Wiel, B. J. H., Moene, A. F., and Steeneveld, G.-J.: An Inconvenient “Truth” about Using Sensible Heat Flux as a Surface Boundary Condition in Models under Stably Stratified Regimes, Acta Geophys., 56, 88–99, <ext-link xlink:href="https://doi.org/10.2478/s11600-007-0038-y" ext-link-type="DOI">10.2478/s11600-007-0038-y</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Beare et al.(2006)Beare, Macvean, Holtslag, Cuxart, Esau, Golaz, Jimenez, Khairoutdinov, Kosovic, Lewellen, Lund, Lundquist, Mccabe, Moene, Noh, Raasch, and Sullivan</label><mixed-citation>Beare, R. J., Macvean, M. K., Holtslag, A. A. M., Cuxart, J., Esau, I., Golaz, J.-C., Jimenez, M. A., Khairoutdinov, M., Kosovic, B., Lewellen, D., Lund, T. S., Lundquist, J. K., Mccabe, A., Moene, A. F., Noh, Y., Raasch, S., and Sullivan, P.: An Intercomparison of Large-Eddy Simulations of the Stable Boundary Layer, Bound.-Lay. Meteorol., 118, 247–272, <ext-link xlink:href="https://doi.org/10.1007/s10546-004-2820-6" ext-link-type="DOI">10.1007/s10546-004-2820-6</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Berg et al.(2020)Berg, Patton, and Sullivan</label><mixed-citation>Berg, J., Patton, E. G., and Sullivan, P. P.: Large-Eddy Simulation of Conditionally Neutral Boundary Layers: A Mesh Resolution Sensitivity Study, J. Atmos. Sci., 77, 1969–1991, <ext-link xlink:href="https://doi.org/10.1175/JAS-D-19-0252.1" ext-link-type="DOI">10.1175/JAS-D-19-0252.1</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Bou-Zeid et al.(2005)Bou-Zeid, Meneveau, and Parlange</label><mixed-citation>Bou-Zeid, E., Meneveau, C., and Parlange, M.: A Scale-Dependent Lagrangian Dynamic Model for Large Eddy Simulation of Complex Turbulent Flows, Phys. Fluids, 17, 025105, <ext-link xlink:href="https://doi.org/10.1063/1.1839152" ext-link-type="DOI">10.1063/1.1839152</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Businger et al.(1971)Businger, Wyngaard, Izumi, and Bradley</label><mixed-citation>Businger, J. A., Wyngaard, J. C., Izumi, Y., and Bradley, E. F.: Flux-Profile Relationships in the Atmospheric Surface Layer, J. Atmos. Sci., 28, 181–189, <ext-link xlink:href="https://doi.org/10.1175/1520-0469(1971)028&lt;0181:FPRITA&gt;2.0.CO;2" ext-link-type="DOI">10.1175/1520-0469(1971)028&lt;0181:FPRITA&gt;2.0.CO;2</ext-link>, 1971.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Deardorff(1970)</label><mixed-citation>Deardorff, J.: A Three-dimensional Numerical Investigation of the Idealized Planetary Boundary Layer, Geophysical Fluid Dynamics, 1, 377–410, <ext-link xlink:href="https://doi.org/10.1080/03091927009365780" ext-link-type="DOI">10.1080/03091927009365780</ext-link>, 1970.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>d'Humières(1994)</label><mixed-citation>d'Humières, D.: Generalized Lattice-Boltzmann Equations, in: Rarefied Gas Dynamics: Theory and Simulations, Progress in Astronautics and Aeronautics, American Institute of Aeronautics and Astronautics, 450–458, <uri>https://arc.aiaa.org/doi/10.2514/5.9781600866319.0450.0458</uri> (last access: 15 July 2026), 1994.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Feng et al.(2021)Feng, Miranda-Fuentes, Guo, Jacob, and Sagaut</label><mixed-citation>Feng, Y., Miranda-Fuentes, J., Guo, S., Jacob, J., and Sagaut, P.: ProLB: A Lattice Boltzmann Solver of Large-Eddy Simulation for Atmospheric Boundary Layer Flows, J. Adv. Model. Earth Sy., 13, e2020MS002107, <ext-link xlink:href="https://doi.org/10.1029/2020MS002107" ext-link-type="DOI">10.1029/2020MS002107</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Gadde et al.(2021)Gadde, Stieren, and Stevens</label><mixed-citation>Gadde, S. N., Stieren, A., and Stevens, R. J. A. M.: Large-Eddy Simulations of Stratified Atmospheric Boundary Layers: Comparison of Different Subgrid Models, Bound.-Lay. Meteorol., 178, 363–382, <ext-link xlink:href="https://doi.org/10.1007/s10546-020-00570-5" ext-link-type="DOI">10.1007/s10546-020-00570-5</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Gehrke and Rung(2022)</label><mixed-citation>Gehrke, M. and Rung, T.: Periodic Hill Flow Simulations with a Parameterized Cumulant Lattice Boltzmann Method, Int. J. Numer. Meth. Fl., 94, 1111–1154, <ext-link xlink:href="https://doi.org/10.1002/fld.5085" ext-link-type="DOI">10.1002/fld.5085</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Geier et al.(2015)Geier, Schönherr, Pasquali, and Krafczyk</label><mixed-citation>Geier, M., Schönherr, M., Pasquali, A., and Krafczyk, M.: The Cumulant Lattice Boltzmann Equation in Three Dimensions: Theory and Validation, Comput. Math. Appl., 70, 507–547, <ext-link xlink:href="https://doi.org/10.1016/j.camwa.2015.05.001" ext-link-type="DOI">10.1016/j.camwa.2015.05.001</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Geier et al.(2017)Geier, Pasquali, and Schönherr</label><mixed-citation>Geier, M., Pasquali, A., and Schönherr, M.: Parametrization of the Cumulant Lattice Boltzmann Method for Fourth Order Accurate Diffusion Part II: Application to Flow around a Sphere at Drag Crisis, J. Comput. Phys., 348, 889–898, <ext-link xlink:href="https://doi.org/10.1016/j.jcp.2017.07.004" ext-link-type="DOI">10.1016/j.jcp.2017.07.004</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Geier et al.(2020)Geier, Lenz, Schönherr, and Krafczyk</label><mixed-citation>Geier, M., Lenz, S., Schönherr, M., and Krafczyk, M.: Under-Resolved and Large Eddy Simulations of a Decaying Taylor–Green Vortex with the Cumulant Lattice Boltzmann Method, Theor. Comp. Fluid Dyn., <ext-link xlink:href="https://doi.org/10.1007/s00162-020-00555-7" ext-link-type="DOI">10.1007/s00162-020-00555-7</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Geier et al.(2025)Geier, Kutscher, Schönherr, Wellmann, Peters, Alihussein, Linxweiler, and Krafczyk</label><mixed-citation>Geier, M., Kutscher, K., Schönherr, M., Wellmann, A., Peters, S., Alihussein, H., Linxweiler, J., and Krafczyk, M.: VirtualFluids – Open Source Parallel LBM Solver, Comput. Phys. Commun., 109810, <ext-link xlink:href="https://doi.org/10.1016/j.cpc.2025.109810" ext-link-type="DOI">10.1016/j.cpc.2025.109810</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Gruszczyński and Łaniewski-Wołłk(2022)</label><mixed-citation>Gruszczyński, G. and Łaniewski-Wołłk, Ł.: A Comparative Study of 3D Cumulant and Central Moments Lattice Boltzmann Schemes with Interpolated Boundary Conditions for the Simulation of Thermal Flows in High Prandtl Number Regime, I. J. Heat Mass Tran., 197, 123259, <ext-link xlink:href="https://doi.org/10.1016/j.ijheatmasstransfer.2022.123259" ext-link-type="DOI">10.1016/j.ijheatmasstransfer.2022.123259</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Jacob et al.(2018)Jacob, Malaspinas, and Sagaut</label><mixed-citation>Jacob, J., Malaspinas, O., and Sagaut, P.: A New Hybrid Recursive Regularised Bhatnagar–Gross–Krook Collision Model for Lattice Boltzmann Method-Based Large Eddy Simulation, J. Turbul., 19, 1051–1076, <ext-link xlink:href="https://doi.org/10.1080/14685248.2018.1540879" ext-link-type="DOI">10.1080/14685248.2018.1540879</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Kahan(1965)</label><mixed-citation>Kahan, W.: Pracniques: Further Remarks on Reducing Truncation Errors, Commun. ACM, 8, 40, <ext-link xlink:href="https://doi.org/10.1145/363707.363723" ext-link-type="DOI">10.1145/363707.363723</ext-link>, 1965.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Khan et al.(2025)Khan, Allaerts, Watson, and Churchfield</label><mixed-citation>Khan, M. A., Allaerts, D., Watson, S. J., and Churchfield, M. J.: Investigating the relationship between simulation parameters and flow variables in simulating atmospheric gravity waves for wind energy applications, Wind Energ. Sci., 10, 1167–1185, <ext-link xlink:href="https://doi.org/10.5194/wes-10-1167-2025" ext-link-type="DOI">10.5194/wes-10-1167-2025</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>King et al.(2017)King, Khan, Delbosc, Gough, Halios, Barlow, and Noakes</label><mixed-citation>King, M.-F., Khan, A., Delbosc, N., Gough, H. L., Halios, C., Barlow, J. F., and Noakes, C. J.: Modelling Urban Airflow and Natural Ventilation Using a GPU-based Lattice-Boltzmann Method, Build. Environ., 125, 273–284, <ext-link xlink:href="https://doi.org/10.1016/j.buildenv.2017.08.048" ext-link-type="DOI">10.1016/j.buildenv.2017.08.048</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Korb(2026)</label><mixed-citation>Korb, H.: Plot data for “Large Eddy Simulation of Thermally Stratified Atmospheric Boundary Layers with a Lattice Boltzmann Method”, Zenodo [data set], <ext-link xlink:href="https://doi.org/10.5281/zenodo.20512678" ext-link-type="DOI">10.5281/zenodo.20512678</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Korb et al.(2026)Korb, Bastin, Asmuth, and Ivanell</label><mixed-citation>Korb, H., Bastin, J., Asmuth, H., and Ivanell, S.: The lattice Boltzmann method for wind farm simulations: a review, Wind Energ. Sci., 11, 983–1012, <ext-link xlink:href="https://doi.org/10.5194/wes-11-983-2026" ext-link-type="DOI">10.5194/wes-11-983-2026</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Krüger et al.(2017)Krüger, Kusumaatmaja, Kuzmin, Shardt, Silva, and Viggen</label><mixed-citation>Krüger, T., Kusumaatmaja, H., Kuzmin, A., Shardt, O., Silva, G., and Viggen, E. M.: The Lattice Boltzmann Method: Principles and Practice, Graduate Texts in Physics, 1 edn., Springer International Publishing, <uri>http://link.springer.com/10.1007/978-3-319-44649-3</uri> (last access: 15 July 2026), 2017.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Kuhn et al.(2025a)Kuhn, Cheung, Yalla, Henry de Frahan, and Mohan</label><mixed-citation>Kuhn, M. B., Cheung, L., Yalla, G., Henry de Frahan, M. T., and Mohan, P.: Exawind Benchmarks, GitHub, <uri>https://github.com/Exawind/exawind-benchmarks/tree/main/amr-wind/atmospheric_boundary_layer/neutral</uri> (last access: 15 July 2026), 2025a.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Kuhn et al.(2025b)Kuhn, Henry de Frahan, Mohan, Deskos, Churchfield, Cheung, Sharma, Almgren, Ananthan, Brazell, Martínez-Tossas, Thedin, Rood, Sakievich, Vijayakumar, Zhang, and Sprague</label><mixed-citation>Kuhn, M. B., Henry de Frahan, M. T., Mohan, P., Deskos, G., Churchfield, M., Cheung, L., Sharma, A., Almgren, A., Ananthan, S., Brazell, M. J., Martínez-Tossas, L. A., Thedin, R., Rood, J., Sakievich, P., Vijayakumar, G., Zhang, W., and Sprague, M.: AMR-Wind: A Performance-Portable, High-Fidelity Flow Solver for Wind Farm Simulations, Wind Energy, 28, e70010, <ext-link xlink:href="https://doi.org/10.1002/we.70010" ext-link-type="DOI">10.1002/we.70010</ext-link>, 2025b.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Kutscher et al.(2026)Kutscher, Schönherr, Geier, Alihussein, Wellmann, Korb, Sukhman, Horneff, Yescas Frangos, Bastin, Lopez Hermida, Mohammadi, and Qin</label><mixed-citation>Kutscher, K., Schönherr, M., Geier, M., Alihussein, H., Wellmann, A., Korb, H., Sukhman, D., Horneff, N., Yescas Frangos, P., Bastin, J., Lopez Hermida, D., Mohammadi, M. M., and Qin, Z.: VirtualFluids, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.20681486" ext-link-type="DOI">10.5281/zenodo.20681486</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Lanzilao and Meyers(2024)</label><mixed-citation>Lanzilao, L. and Meyers, J.: A Parametric Large-Eddy Simulation Study of Wind-Farm Blockage and Gravity Waves in Conventionally Neutral Boundary Layers, J. Fluid Mech., 979, A54, <ext-link xlink:href="https://doi.org/10.1017/jfm.2023.1088" ext-link-type="DOI">10.1017/jfm.2023.1088</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Lenz et al.(2019)Lenz, Schönherr, Geier, Krafczyk, Pasquali, Christen, and Giometto</label><mixed-citation>Lenz, S., Schönherr, M., Geier, M., Krafczyk, M., Pasquali, A., Christen, A., and Giometto, M.: Towards Real-Time Simulation of Turbulent Air Flow over a Resolved Urban Canopy Using the Cumulant Lattice Boltzmann Method on a GPGPU, J. Wind Eng. Ind. Aerod., 189, 151–162, <ext-link xlink:href="https://doi.org/10.1016/j.jweia.2019.03.012" ext-link-type="DOI">10.1016/j.jweia.2019.03.012</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Leonard(1979)</label><mixed-citation>Leonard, B. P.: A Stable and Accurate Convective Modelling Procedure Based on Quadratic Upstream Interpolation, Comput. Method. Appl. M., 19, 59–98, <ext-link xlink:href="https://doi.org/10.1016/0045-7825(79)90034-3" ext-link-type="DOI">10.1016/0045-7825(79)90034-3</ext-link>, 1979.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Lilly(1966)</label><mixed-citation>Lilly, D.: The Representation of Small-Scale Turbulence in Numerical Simulation Experiments, University Corporation for Atmospheric Research, <ext-link xlink:href="https://doi.org/10.5065/D62R3PMM" ext-link-type="DOI">10.5065/D62R3PMM</ext-link>, 1966.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Malaspinas and Sagaut(2014)</label><mixed-citation>Malaspinas, O. and Sagaut, P.: Wall Model for Large-Eddy Simulation Based on the Lattice Boltzmann Method, J. Comput. Phys., 275, 25–40, <ext-link xlink:href="https://doi.org/10.1016/j.jcp.2014.06.020" ext-link-type="DOI">10.1016/j.jcp.2014.06.020</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Min et al.(2024)Min, Brazell, Tomboulides, Churchfield, Fischer, and Sprague</label><mixed-citation>Min, M., Brazell, M., Tomboulides, A., Churchfield, M., Fischer, P., and Sprague, M.: Towards Exascale for Wind Energy Simulations, Int. J. High Perform. C., 38, 337–355, <ext-link xlink:href="https://doi.org/10.1177/10943420241252511" ext-link-type="DOI">10.1177/10943420241252511</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Moeng(1984)</label><mixed-citation>Moeng, C.-H.: A Large-Eddy-Simulation Model for the Study of Planetary Boundary-Layer Turbulence, J. Atmos. Sci., 41, 2052–2062, <ext-link xlink:href="https://doi.org/10.1175/1520-0469(1984)041&lt;2052:ALESMF&gt;2.0.CO;2" ext-link-type="DOI">10.1175/1520-0469(1984)041&lt;2052:ALESMF&gt;2.0.CO;2</ext-link>, 1984.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Obrecht et al.(2012)Obrecht, Kuznik, Tourancheau, and Roux</label><mixed-citation>Obrecht, C., Kuznik, F., Tourancheau, B., and Roux, J.-J.: The TheLMA Project: A Thermal Lattice Boltzmann Solver for the GPU, Comput. Fluids, 54, 118–126, <ext-link xlink:href="https://doi.org/10.1016/j.compfluid.2011.10.011" ext-link-type="DOI">10.1016/j.compfluid.2011.10.011</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Obrecht et al.(2013)Obrecht, Kuznik, Tourancheau, and Roux</label><mixed-citation>Obrecht, C., Kuznik, F., Tourancheau, B., and Roux, J.-J.: Multi-GPU Implementation of the Lattice Boltzmann Method, Comput. Math. Appl., 65, 252–261, <ext-link xlink:href="https://doi.org/10.1016/j.camwa.2011.02.020" ext-link-type="DOI">10.1016/j.camwa.2011.02.020</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Obrecht et al.(2015)Obrecht, Kuznik, Merlier, Roux, and Tourancheau</label><mixed-citation>Obrecht, C., Kuznik, F., Merlier, L., Roux, J.-J., and Tourancheau, B.: Towards Aeraulic Simulations at Urban Scale Using the Lattice Boltzmann Method, Environ. Fluid Mech., 15, 753–770, <ext-link xlink:href="https://doi.org/10.1007/s10652-014-9381-0" ext-link-type="DOI">10.1007/s10652-014-9381-0</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Onodera et al.(2013)Onodera, Aoki, Shimokawabe, and Kobayashi</label><mixed-citation>Onodera, N., Aoki, T., Shimokawabe, T., and Kobayashi, H.: Large-Scale LES Wind Simulation Using Lattice Boltzmann Method for a 10 <inline-formula><mml:math id="M427" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Km</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M428" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10 <inline-formula><mml:math id="M429" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Km</mml:mi></mml:mrow></mml:math></inline-formula> Area in Metropolitan Tokyo, TSUBAME ESJ, 9, 2–8, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Onodera et al.(2021)Onodera, Idomura, Hasegawa, Nakayama, Shimokawabe, and Aoki</label><mixed-citation>Onodera, N., Idomura, Y., Hasegawa, Y., Nakayama, H., Shimokawabe, T., and Aoki, T.: Real-Time Tracer Dispersion Simulations in Oklahoma City Using the Locally Mesh-Refined Lattice Boltzmann Method, Bound.-Lay. Meteorol., <ext-link xlink:href="https://doi.org/10.1007/s10546-020-00594-x" ext-link-type="DOI">10.1007/s10546-020-00594-x</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Platis et al.(2022)Platis, Hundhausen, Lampert, Emeis, and Bange</label><mixed-citation>Platis, A., Hundhausen, M., Lampert, A., Emeis, S., and Bange, J.: The Role of Atmospheric Stability and Turbulence in Offshore Wind-Farm Wakes in the German Bight, Bound.-Lay. Meteorol., 182, 441–469, <ext-link xlink:href="https://doi.org/10.1007/s10546-021-00668-4" ext-link-type="DOI">10.1007/s10546-021-00668-4</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Rozema et al.(2015)Rozema, Bae, Moin, and Verstappen</label><mixed-citation>Rozema, W., Bae, H. J., Moin, P., and Verstappen, R.: Minimum-Dissipation Models for Large-Eddy Simulation, Phys. Fluids, 27, 085107, <ext-link xlink:href="https://doi.org/10.1063/1.4928700" ext-link-type="DOI">10.1063/1.4928700</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Sauer and Muñoz-Esparza(2020)</label><mixed-citation>Sauer, J. A. and Muñoz-Esparza, D.: The FastEddy<sup>®</sup> Resident-GPU Accelerated Large-Eddy Simulation Framework: Model Formulation, Dynamical-Core Validation and Performance Benchmarks, J. Adv. Model. Earth Sy., 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.bibx47"><label>Smagorinsky(1963)</label><mixed-citation>Smagorinsky, J.: GENERAL CIRCULATION EXPERIMENTS WITH THE PRIMITIVE EQUATIONS: I. THE BASIC EXPERIMENT, Mon. Weather Rev., 91, 99–164, <ext-link xlink:href="https://doi.org/10.1175/1520-0493(1963)091&lt;0099:GCEWTP&gt;2.3.CO;2" ext-link-type="DOI">10.1175/1520-0493(1963)091&lt;0099:GCEWTP&gt;2.3.CO;2</ext-link>, 1963.</mixed-citation></ref>
      <ref id="bib1.bibx48"><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, Bound.-Lay. Meteorol., 177, 541–581, <ext-link xlink:href="https://doi.org/10.1007/s10546-020-00556-3" ext-link-type="DOI">10.1007/s10546-020-00556-3</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx49"><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.bibx50"><label>Van Leer(1977)</label><mixed-citation>Van Leer, B.: Towards the Ultimate Conservative Difference Scheme. IV. A New Approach to Numerical Convection, J. Comput. Phys., 23, 276–299, <ext-link xlink:href="https://doi.org/10.1016/0021-9991(77)90095-X" ext-link-type="DOI">10.1016/0021-9991(77)90095-X</ext-link>, 1977.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Verstappen(2011)</label><mixed-citation>Verstappen, R.: When Does Eddy Viscosity Damp Subfilter Scales Sufficiently?, J. Sci. Comput., 49, 94, <ext-link xlink:href="https://doi.org/10.1007/s10915-011-9504-4" ext-link-type="DOI">10.1007/s10915-011-9504-4</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>Wang et al.(2020)Wang, MacCall, Hocut, Zeng, and Fernando</label><mixed-citation>Wang, Y., MacCall, B. T., Hocut, C. M., Zeng, X., and Fernando, H. J. S.: Simulation of Stratified Flows over a Ridge Using a Lattice Boltzmann Model, Environ. Fluid Mech., 20, 1333–1355, <ext-link xlink:href="https://doi.org/10.1007/s10652-018-9599-3" ext-link-type="DOI">10.1007/s10652-018-9599-3</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Yang et al.(2016)Yang, Mehmani, Perkins, Pasquali, Schönherr, Kim, Perego, Parks, Trask, Balhoff, Richmond, Geier, Krafczyk, Luo, Tartakovsky, and Scheibe</label><mixed-citation>Yang, X., Mehmani, Y., Perkins, W. A., Pasquali, A., Schönherr, M., Kim, K., Perego, M., Parks, M. L., Trask, N., Balhoff, M. T., Richmond, M. C., Geier, M., Krafczyk, M., Luo, L.-S., Tartakovsky, A. M., and Scheibe, T. D.: Intercomparison of 3D Pore-Scale Flow and Solute Transport Simulation Methods, Adv. Water Resour., 95, 176–189, <ext-link xlink:href="https://doi.org/10.1016/j.advwatres.2015.09.015" ext-link-type="DOI">10.1016/j.advwatres.2015.09.015</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Yang et al.(2017)Yang, Park, and Moin</label><mixed-citation>Yang, X. I. A., Park, G. I., and Moin, P.: Log-Layer Mismatch and Modeling of the Fluctuating Wall Stress in Wall-Modeled Large-Eddy Simulations, Phys. Rev. Fluids, 2, 104601, <ext-link xlink:href="https://doi.org/10.1103/PhysRevFluids.2.104601" ext-link-type="DOI">10.1103/PhysRevFluids.2.104601</ext-link>, 2017.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Large-eddy simulation of thermally stratified atmospheric boundary layers with a lattice Boltzmann method</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Abkar and Porté-Agel(2015)</label><mixed-citation>
      
Abkar, M. and Porté-Agel, F.:
Influence of Atmospheric Stability on Wind-Turbine Wakes: A Large-Eddy Simulation Study, Phys. Fluids, 27, 035104, <a href="https://doi.org/10.1063/1.4913695" target="_blank">https://doi.org/10.1063/1.4913695</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Abkar et al.(2016)Abkar, Bae, and Moin</label><mixed-citation>
      
Abkar, M., Bae, H. J., and Moin, P.:
Minimum-Dissipation Scalar Transport Model for Large-Eddy Simulation of Turbulent Flows, Phys. Rev. Fluids, 1, 041701, <a href="https://doi.org/10.1103/PhysRevFluids.1.041701" target="_blank">https://doi.org/10.1103/PhysRevFluids.1.041701</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Alihussein et al.(2021)Alihussein, Geier, and Krafczyk</label><mixed-citation>
      
Alihussein, H., Geier, M., and Krafczyk, M.:
A Parallel Coupled Lattice Boltzmann-Volume of Fluid Framework for Modeling Porous Media Evolution, Materials, 14, 2510, <a href="https://doi.org/10.3390/ma14102510" target="_blank">https://doi.org/10.3390/ma14102510</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Allaerts and Meyers(2017)</label><mixed-citation>
      
Allaerts, D. and Meyers, J.:
Boundary-Layer Development and Gravity Waves in Conventionally Neutral Wind Farms, J. Fluid Mech., 814, 95–130, <a href="https://doi.org/10.1017/jfm.2017.11" target="_blank">https://doi.org/10.1017/jfm.2017.11</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Arya(2001)</label><mixed-citation>
      
Arya, S. P.:
Introduction to Micrometeorology, 2nd edn., vol. 79 of International Geophysics Series, Academic Press, San Diego, ISBN 0-12-059354-8, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Asmuth et al.(2021)Asmuth, Janßen, Olivares-Espinosa, and Ivanell</label><mixed-citation>
      
Asmuth, H., Janßen, C. F., Olivares-Espinosa, H., and Ivanell, S.:
Wall-Modeled Lattice Boltzmann Large-Eddy Simulation of Neutral Atmospheric Boundary Layers, Phys. Fluids, 33, 105111, <a href="https://doi.org/10.1063/5.0065701" target="_blank">https://doi.org/10.1063/5.0065701</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Basu et al.(2008)Basu, Holtslag, Van De Wiel, Moene, and Steeneveld</label><mixed-citation>
      
Basu, S., Holtslag, A. A. M., Van De Wiel, B. J. H., Moene, A. F., and Steeneveld, G.-J.:
An Inconvenient “Truth” about Using Sensible Heat Flux as a Surface Boundary Condition in Models under Stably Stratified Regimes, Acta Geophys., 56, 88–99, <a href="https://doi.org/10.2478/s11600-007-0038-y" target="_blank">https://doi.org/10.2478/s11600-007-0038-y</a>, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Beare et al.(2006)Beare, Macvean, Holtslag, Cuxart, Esau, Golaz, Jimenez, Khairoutdinov, Kosovic, Lewellen, Lund, Lundquist, Mccabe, Moene, Noh, Raasch, and Sullivan</label><mixed-citation>
      
Beare, R. J., Macvean, M. K., Holtslag, A. A. M., Cuxart, J., Esau, I., Golaz, J.-C., Jimenez, M. A., Khairoutdinov, M., Kosovic, B., Lewellen, D., Lund, T. S., Lundquist, J. K., Mccabe, A., Moene, A. F., Noh, Y., Raasch, S., and Sullivan, P.:
An Intercomparison of Large-Eddy Simulations of the Stable Boundary Layer, Bound.-Lay. Meteorol., 118, 247–272, <a href="https://doi.org/10.1007/s10546-004-2820-6" target="_blank">https://doi.org/10.1007/s10546-004-2820-6</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Berg et al.(2020)Berg, Patton, and Sullivan</label><mixed-citation>
      
Berg, J., Patton, E. G., and Sullivan, P. P.:
Large-Eddy Simulation of Conditionally Neutral Boundary Layers: A Mesh Resolution Sensitivity Study, J. Atmos. Sci., 77, 1969–1991, <a href="https://doi.org/10.1175/JAS-D-19-0252.1" target="_blank">https://doi.org/10.1175/JAS-D-19-0252.1</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Bou-Zeid et al.(2005)Bou-Zeid, Meneveau, and Parlange</label><mixed-citation>
      
Bou-Zeid, E., Meneveau, C., and Parlange, M.:
A Scale-Dependent Lagrangian Dynamic Model for Large Eddy Simulation of Complex Turbulent Flows, Phys. Fluids, 17, 025105, <a href="https://doi.org/10.1063/1.1839152" target="_blank">https://doi.org/10.1063/1.1839152</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Businger et al.(1971)Businger, Wyngaard, Izumi, and Bradley</label><mixed-citation>
      
Businger, J. A., Wyngaard, J. C., Izumi, Y., and Bradley, E. F.:
Flux-Profile Relationships in the Atmospheric Surface Layer, J. Atmos. Sci., 28, 181–189, <a href="https://doi.org/10.1175/1520-0469(1971)028&lt;0181:FPRITA&gt;2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0469(1971)028&lt;0181:FPRITA&gt;2.0.CO;2</a>, 1971.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Deardorff(1970)</label><mixed-citation>
      
Deardorff, J.:
A Three-dimensional Numerical Investigation of the Idealized Planetary Boundary Layer, Geophysical Fluid Dynamics, 1, 377–410, <a href="https://doi.org/10.1080/03091927009365780" target="_blank">https://doi.org/10.1080/03091927009365780</a>, 1970.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>d'Humières(1994)</label><mixed-citation>
      
d'Humières, D.:
Generalized Lattice-Boltzmann Equations, in: Rarefied Gas Dynamics: Theory and Simulations, Progress in Astronautics and Aeronautics, American Institute of Aeronautics and Astronautics, 450–458, <a href="https://arc.aiaa.org/doi/10.2514/5.9781600866319.0450.0458" target="_blank"/> (last access: 15 July 2026), 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Feng et al.(2021)Feng, Miranda-Fuentes, Guo, Jacob, and Sagaut</label><mixed-citation>
      
Feng, Y., Miranda-Fuentes, J., Guo, S., Jacob, J., and Sagaut, P.:
ProLB: A Lattice Boltzmann Solver of Large-Eddy Simulation for Atmospheric Boundary Layer Flows, J. Adv. Model. Earth Sy., 13, e2020MS002107, <a href="https://doi.org/10.1029/2020MS002107" target="_blank">https://doi.org/10.1029/2020MS002107</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Gadde et al.(2021)Gadde, Stieren, and Stevens</label><mixed-citation>
      
Gadde, S. N., Stieren, A., and Stevens, R. J. A. M.:
Large-Eddy Simulations of Stratified Atmospheric Boundary Layers: Comparison of Different Subgrid Models, Bound.-Lay. Meteorol., 178, 363–382, <a href="https://doi.org/10.1007/s10546-020-00570-5" target="_blank">https://doi.org/10.1007/s10546-020-00570-5</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Gehrke and Rung(2022)</label><mixed-citation>
      
Gehrke, M. and Rung, T.:
Periodic Hill Flow Simulations with a Parameterized Cumulant Lattice Boltzmann Method, Int. J. Numer. Meth. Fl., 94, 1111–1154, <a href="https://doi.org/10.1002/fld.5085" target="_blank">https://doi.org/10.1002/fld.5085</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Geier et al.(2015)Geier, Schönherr, Pasquali, and Krafczyk</label><mixed-citation>
      
Geier, M., Schönherr, M., Pasquali, A., and Krafczyk, M.:
The Cumulant Lattice Boltzmann Equation in Three Dimensions: Theory and Validation, Comput. Math. Appl., 70, 507–547, <a href="https://doi.org/10.1016/j.camwa.2015.05.001" target="_blank">https://doi.org/10.1016/j.camwa.2015.05.001</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Geier et al.(2017)Geier, Pasquali, and Schönherr</label><mixed-citation>
      
Geier, M., Pasquali, A., and Schönherr, M.:
Parametrization of the Cumulant Lattice Boltzmann Method for Fourth Order Accurate Diffusion Part II: Application to Flow around a Sphere at Drag Crisis, J. Comput. Phys., 348, 889–898, <a href="https://doi.org/10.1016/j.jcp.2017.07.004" target="_blank">https://doi.org/10.1016/j.jcp.2017.07.004</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Geier et al.(2020)Geier, Lenz, Schönherr, and Krafczyk</label><mixed-citation>
      
Geier, M., Lenz, S., Schönherr, M., and Krafczyk, M.:
Under-Resolved and Large Eddy Simulations of a Decaying Taylor–Green Vortex with the Cumulant Lattice Boltzmann Method, Theor. Comp. Fluid Dyn., <a href="https://doi.org/10.1007/s00162-020-00555-7" target="_blank">https://doi.org/10.1007/s00162-020-00555-7</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Geier et al.(2025)Geier, Kutscher, Schönherr, Wellmann, Peters, Alihussein, Linxweiler, and Krafczyk</label><mixed-citation>
      
Geier, M., Kutscher, K., Schönherr, M., Wellmann, A., Peters, S., Alihussein, H., Linxweiler, J., and Krafczyk, M.:
VirtualFluids – Open Source Parallel LBM Solver, Comput. Phys. Commun., 109810, <a href="https://doi.org/10.1016/j.cpc.2025.109810" target="_blank">https://doi.org/10.1016/j.cpc.2025.109810</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Gruszczyński and Łaniewski-Wołłk(2022)</label><mixed-citation>
      
Gruszczyński, G. and Łaniewski-Wołłk, Ł.:
A Comparative Study of 3D Cumulant and Central Moments Lattice Boltzmann Schemes with Interpolated Boundary Conditions for the Simulation of Thermal Flows in High Prandtl Number Regime, I. J. Heat Mass Tran., 197, 123259, <a href="https://doi.org/10.1016/j.ijheatmasstransfer.2022.123259" target="_blank">https://doi.org/10.1016/j.ijheatmasstransfer.2022.123259</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Jacob et al.(2018)Jacob, Malaspinas, and Sagaut</label><mixed-citation>
      
Jacob, J., Malaspinas, O., and Sagaut, P.:
A New Hybrid Recursive Regularised Bhatnagar–Gross–Krook Collision Model for Lattice Boltzmann Method-Based Large Eddy Simulation, J. Turbul., 19, 1051–1076, <a href="https://doi.org/10.1080/14685248.2018.1540879" target="_blank">https://doi.org/10.1080/14685248.2018.1540879</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Kahan(1965)</label><mixed-citation>
      
Kahan, W.:
Pracniques: Further Remarks on Reducing Truncation Errors, Commun. ACM, 8, 40, <a href="https://doi.org/10.1145/363707.363723" target="_blank">https://doi.org/10.1145/363707.363723</a>, 1965.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Khan et al.(2025)Khan, Allaerts, Watson, and Churchfield</label><mixed-citation>
      
Khan, M. A., Allaerts, D., Watson, S. J., and Churchfield, M. J.:
Investigating the relationship between simulation parameters and flow variables in simulating atmospheric gravity waves for wind energy applications, Wind Energ. Sci., 10, 1167–1185, <a href="https://doi.org/10.5194/wes-10-1167-2025" target="_blank">https://doi.org/10.5194/wes-10-1167-2025</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>King et al.(2017)King, Khan, Delbosc, Gough, Halios, Barlow, and Noakes</label><mixed-citation>
      
King, M.-F., Khan, A., Delbosc, N., Gough, H. L., Halios, C., Barlow, J. F., and Noakes, C. J.:
Modelling Urban Airflow and Natural Ventilation Using a GPU-based Lattice-Boltzmann Method, Build. Environ., 125, 273–284, <a href="https://doi.org/10.1016/j.buildenv.2017.08.048" target="_blank">https://doi.org/10.1016/j.buildenv.2017.08.048</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Korb(2026)</label><mixed-citation>
      
Korb, H.: Plot data for “Large Eddy Simulation of Thermally Stratified Atmospheric Boundary Layers with a Lattice Boltzmann Method”, Zenodo [data set], <a href="https://doi.org/10.5281/zenodo.20512678" target="_blank">https://doi.org/10.5281/zenodo.20512678</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Korb et al.(2026)Korb, Bastin, Asmuth, and Ivanell</label><mixed-citation>
      
Korb, H., Bastin, J., Asmuth, H., and Ivanell, S.:
The lattice Boltzmann method for wind farm simulations: a review, Wind Energ. Sci., 11, 983–1012, <a href="https://doi.org/10.5194/wes-11-983-2026" target="_blank">https://doi.org/10.5194/wes-11-983-2026</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Krüger et al.(2017)Krüger, Kusumaatmaja, Kuzmin, Shardt, Silva, and Viggen</label><mixed-citation>
      
Krüger, T., Kusumaatmaja, H., Kuzmin, A., Shardt, O., Silva, G., and Viggen, E. M.:
The Lattice Boltzmann Method: Principles and Practice, Graduate Texts in Physics, 1 edn., Springer International Publishing, <a href="http://link.springer.com/10.1007/978-3-319-44649-3" target="_blank"/> (last access: 15 July 2026), 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Kuhn et al.(2025a)Kuhn, Cheung, Yalla, Henry de Frahan, and Mohan</label><mixed-citation>
      
Kuhn, M. B., Cheung, L., Yalla, G., Henry de Frahan, M. T., and Mohan, P.:
Exawind Benchmarks, GitHub, <a href="https://github.com/Exawind/exawind-benchmarks/tree/main/amr-wind/atmospheric_boundary_layer/neutral" target="_blank"/> (last access: 15 July 2026), 2025a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Kuhn et al.(2025b)Kuhn, Henry de Frahan, Mohan, Deskos, Churchfield, Cheung, Sharma, Almgren, Ananthan, Brazell, Martínez-Tossas, Thedin, Rood, Sakievich, Vijayakumar, Zhang, and Sprague</label><mixed-citation>
      
Kuhn, M. B., Henry de Frahan, M. T., Mohan, P., Deskos, G., Churchfield, M., Cheung, L., Sharma, A., Almgren, A., Ananthan, S., Brazell, M. J., Martínez-Tossas, L. A., Thedin, R., Rood, J., Sakievich, P., Vijayakumar, G., Zhang, W., and Sprague, M.:
AMR-Wind: A Performance-Portable, High-Fidelity Flow Solver for Wind Farm Simulations, Wind Energy, 28, e70010, <a href="https://doi.org/10.1002/we.70010" target="_blank">https://doi.org/10.1002/we.70010</a>, 2025b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Kutscher et al.(2026)Kutscher, Schönherr, Geier, Alihussein, Wellmann, Korb, Sukhman, Horneff, Yescas Frangos, Bastin, Lopez Hermida, Mohammadi, and Qin</label><mixed-citation>
      
Kutscher, K., Schönherr, M., Geier, M., Alihussein, H., Wellmann, A., Korb, H., Sukhman, D., Horneff, N., Yescas Frangos, P., Bastin, J., Lopez Hermida, D., Mohammadi, M. M., and Qin, Z.:
VirtualFluids, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.20681486" target="_blank">https://doi.org/10.5281/zenodo.20681486</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Lanzilao and Meyers(2024)</label><mixed-citation>
      
Lanzilao, L. and Meyers, J.:
A Parametric Large-Eddy Simulation Study of Wind-Farm Blockage and Gravity Waves in Conventionally Neutral Boundary Layers, J. Fluid Mech., 979, A54, <a href="https://doi.org/10.1017/jfm.2023.1088" target="_blank">https://doi.org/10.1017/jfm.2023.1088</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Lenz et al.(2019)Lenz, Schönherr, Geier, Krafczyk, Pasquali, Christen, and Giometto</label><mixed-citation>
      
Lenz, S., Schönherr, M., Geier, M., Krafczyk, M., Pasquali, A., Christen, A., and Giometto, M.:
Towards Real-Time Simulation of Turbulent Air Flow over a Resolved Urban Canopy Using the Cumulant Lattice Boltzmann Method on a GPGPU, J. Wind Eng. Ind. Aerod., 189, 151–162, <a href="https://doi.org/10.1016/j.jweia.2019.03.012" target="_blank">https://doi.org/10.1016/j.jweia.2019.03.012</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Leonard(1979)</label><mixed-citation>
      
Leonard, B. P.:
A Stable and Accurate Convective Modelling Procedure Based on Quadratic Upstream Interpolation, Comput. Method. Appl. M., 19, 59–98, <a href="https://doi.org/10.1016/0045-7825(79)90034-3" target="_blank">https://doi.org/10.1016/0045-7825(79)90034-3</a>, 1979.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Lilly(1966)</label><mixed-citation>
      
Lilly, D.:
The Representation of Small-Scale Turbulence in Numerical Simulation Experiments, University Corporation for Atmospheric Research, <a href="https://doi.org/10.5065/D62R3PMM" target="_blank">https://doi.org/10.5065/D62R3PMM</a>, 1966.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Malaspinas and Sagaut(2014)</label><mixed-citation>
      
Malaspinas, O. and Sagaut, P.:
Wall Model for Large-Eddy Simulation Based on the Lattice Boltzmann Method, J. Comput. Phys., 275, 25–40, <a href="https://doi.org/10.1016/j.jcp.2014.06.020" target="_blank">https://doi.org/10.1016/j.jcp.2014.06.020</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Min et al.(2024)Min, Brazell, Tomboulides, Churchfield, Fischer, and Sprague</label><mixed-citation>
      
Min, M., Brazell, M., Tomboulides, A., Churchfield, M., Fischer, P., and Sprague, M.:
Towards Exascale for Wind Energy Simulations, Int. J. High Perform. C., 38, 337–355, <a href="https://doi.org/10.1177/10943420241252511" target="_blank">https://doi.org/10.1177/10943420241252511</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Moeng(1984)</label><mixed-citation>
      
Moeng, C.-H.:
A Large-Eddy-Simulation Model for the Study of Planetary Boundary-Layer Turbulence, J. Atmos. Sci., 41, 2052–2062, <a href="https://doi.org/10.1175/1520-0469(1984)041&lt;2052:ALESMF&gt;2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0469(1984)041&lt;2052:ALESMF&gt;2.0.CO;2</a>, 1984.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Obrecht et al.(2012)Obrecht, Kuznik, Tourancheau, and Roux</label><mixed-citation>
      
Obrecht, C., Kuznik, F., Tourancheau, B., and Roux, J.-J.:
The TheLMA Project: A Thermal Lattice Boltzmann Solver for the GPU, Comput. Fluids, 54, 118–126, <a href="https://doi.org/10.1016/j.compfluid.2011.10.011" target="_blank">https://doi.org/10.1016/j.compfluid.2011.10.011</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Obrecht et al.(2013)Obrecht, Kuznik, Tourancheau, and Roux</label><mixed-citation>
      
Obrecht, C., Kuznik, F., Tourancheau, B., and Roux, J.-J.:
Multi-GPU Implementation of the Lattice Boltzmann Method, Comput. Math. Appl., 65, 252–261, <a href="https://doi.org/10.1016/j.camwa.2011.02.020" target="_blank">https://doi.org/10.1016/j.camwa.2011.02.020</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Obrecht et al.(2015)Obrecht, Kuznik, Merlier, Roux, and Tourancheau</label><mixed-citation>
      
Obrecht, C., Kuznik, F., Merlier, L., Roux, J.-J., and Tourancheau, B.:
Towards Aeraulic Simulations at Urban Scale Using the Lattice Boltzmann Method, Environ. Fluid Mech., 15, 753–770, <a href="https://doi.org/10.1007/s10652-014-9381-0" target="_blank">https://doi.org/10.1007/s10652-014-9381-0</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Onodera et al.(2013)Onodera, Aoki, Shimokawabe, and Kobayashi</label><mixed-citation>
      
Onodera, N., Aoki, T., Shimokawabe, T., and Kobayashi, H.:
Large-Scale LES Wind Simulation Using Lattice Boltzmann Method for a 10&thinsp;Km&thinsp; × &thinsp;10&thinsp;Km Area in Metropolitan Tokyo, TSUBAME ESJ, 9, 2–8, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Onodera et al.(2021)Onodera, Idomura, Hasegawa, Nakayama, Shimokawabe, and Aoki</label><mixed-citation>
      
Onodera, N., Idomura, Y., Hasegawa, Y., Nakayama, H., Shimokawabe, T., and Aoki, T.:
Real-Time Tracer Dispersion Simulations in Oklahoma City Using the Locally Mesh-Refined Lattice Boltzmann Method, Bound.-Lay. Meteorol., <a href="https://doi.org/10.1007/s10546-020-00594-x" target="_blank">https://doi.org/10.1007/s10546-020-00594-x</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Platis et al.(2022)Platis, Hundhausen, Lampert, Emeis, and Bange</label><mixed-citation>
      
Platis, A., Hundhausen, M., Lampert, A., Emeis, S., and Bange, J.:
The Role of Atmospheric Stability and Turbulence in Offshore Wind-Farm Wakes in the German Bight, Bound.-Lay. Meteorol., 182, 441–469, <a href="https://doi.org/10.1007/s10546-021-00668-4" target="_blank">https://doi.org/10.1007/s10546-021-00668-4</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Rozema et al.(2015)Rozema, Bae, Moin, and Verstappen</label><mixed-citation>
      
Rozema, W., Bae, H. J., Moin, P., and Verstappen, R.:
Minimum-Dissipation Models for Large-Eddy Simulation, Phys. Fluids, 27, 085107, <a href="https://doi.org/10.1063/1.4928700" target="_blank">https://doi.org/10.1063/1.4928700</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Sauer and Muñoz-Esparza(2020)</label><mixed-citation>
      
Sauer, J. A. and Muñoz-Esparza, D.:
The FastEddy<span style="position:relative; bottom:0.5em; " class="text">®</span> Resident-GPU Accelerated Large-Eddy Simulation Framework: Model Formulation, Dynamical-Core Validation and Performance Benchmarks, J. Adv. Model. Earth Sy., 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.bib47"><label>Smagorinsky(1963)</label><mixed-citation>
      
Smagorinsky, J.:
GENERAL CIRCULATION EXPERIMENTS WITH THE PRIMITIVE EQUATIONS: I. THE BASIC EXPERIMENT, Mon. Weather Rev., 91, 99–164, <a href="https://doi.org/10.1175/1520-0493(1963)091&lt;0099:GCEWTP&gt;2.3.CO;2" target="_blank">https://doi.org/10.1175/1520-0493(1963)091&lt;0099:GCEWTP&gt;2.3.CO;2</a>, 1963.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><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, Bound.-Lay. Meteorol., 177, 541–581, <a href="https://doi.org/10.1007/s10546-020-00556-3" target="_blank">https://doi.org/10.1007/s10546-020-00556-3</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><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.bib50"><label>Van Leer(1977)</label><mixed-citation>
      
Van Leer, B.:
Towards the Ultimate Conservative Difference Scheme. IV. A New Approach to Numerical Convection, J. Comput. Phys., 23, 276–299, <a href="https://doi.org/10.1016/0021-9991(77)90095-X" target="_blank">https://doi.org/10.1016/0021-9991(77)90095-X</a>, 1977.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Verstappen(2011)</label><mixed-citation>
      
Verstappen, R.:
When Does Eddy Viscosity Damp Subfilter Scales Sufficiently?, J. Sci. Comput., 49, 94, <a href="https://doi.org/10.1007/s10915-011-9504-4" target="_blank">https://doi.org/10.1007/s10915-011-9504-4</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Wang et al.(2020)Wang, MacCall, Hocut, Zeng, and Fernando</label><mixed-citation>
      
Wang, Y., MacCall, B. T., Hocut, C. M., Zeng, X., and Fernando, H. J. S.:
Simulation of Stratified Flows over a Ridge Using a Lattice Boltzmann Model, Environ. Fluid Mech., 20, 1333–1355, <a href="https://doi.org/10.1007/s10652-018-9599-3" target="_blank">https://doi.org/10.1007/s10652-018-9599-3</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Yang et al.(2016)Yang, Mehmani, Perkins, Pasquali, Schönherr, Kim, Perego, Parks, Trask, Balhoff, Richmond, Geier, Krafczyk, Luo, Tartakovsky, and Scheibe</label><mixed-citation>
      
Yang, X., Mehmani, Y., Perkins, W. A., Pasquali, A., Schönherr, M., Kim, K., Perego, M., Parks, M. L., Trask, N., Balhoff, M. T., Richmond, M. C., Geier, M., Krafczyk, M., Luo, L.-S., Tartakovsky, A. M., and Scheibe, T. D.:
Intercomparison of 3D Pore-Scale Flow and Solute Transport Simulation Methods, Adv. Water Resour., 95, 176–189, <a href="https://doi.org/10.1016/j.advwatres.2015.09.015" target="_blank">https://doi.org/10.1016/j.advwatres.2015.09.015</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Yang et al.(2017)Yang, Park, and Moin</label><mixed-citation>
      
Yang, X. I. A., Park, G. I., and Moin, P.:
Log-Layer Mismatch and Modeling of the Fluctuating Wall Stress in Wall-Modeled Large-Eddy Simulations, Phys. Rev. Fluids, 2, 104601, <a href="https://doi.org/10.1103/PhysRevFluids.2.104601" target="_blank">https://doi.org/10.1103/PhysRevFluids.2.104601</a>, 2017.

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