<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xml:lang="en" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMES</journal-id>
<journal-id journal-id-type="nlm-ta">CMES</journal-id>
<journal-id journal-id-type="publisher-id">CMES</journal-id>
<journal-title-group>
<journal-title>Computer Modeling in Engineering &#x0026; Sciences</journal-title>
</journal-title-group>
<issn pub-type="epub">1526-1506</issn>
<issn pub-type="ppub">1526-1492</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">62063</article-id>
<article-id pub-id-type="doi">10.32604/cmes.2025.062063</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Shock-Capturing Particle Hydrodynamics with Reproducing Kernels</article-title>
<alt-title alt-title-type="left-running-head">Shock-Capturing Particle Hydrodynamics with Reproducing Kernels</alt-title>
<alt-title alt-title-type="right-running-head">Shock-Capturing Particle Hydrodynamics with Reproducing Kernels</alt-title>
</title-group>
<contrib-group>
<contrib id="author-1" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Rosswog</surname><given-names>Stephan</given-names></name><xref ref-type="aff" rid="aff-1">1</xref><xref ref-type="aff" rid="aff-2">2</xref><xref rid="cor1" ref-type="corresp">&#x002A;</xref><email>stephan.rosswog@uni-hamburg.de</email></contrib>
<aff id="aff-1"><label>1</label><institution>Hamburg Observatory, University of Hamburg</institution>, <addr-line>Gojenbergsweg 112, Hamburg, 21029</addr-line>, <country>Germany</country></aff>
<aff id="aff-2"><label>2</label><institution>The Oskar Klein Centre, Department of Astronomy, AlbaNova, Stockholm University</institution>, <addr-line>Stockholm, 10691</addr-line>, <country>Sweden</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Stephan Rosswog. Email: <email>stephan.rosswog@uni-hamburg.de</email></corresp>
</author-notes>
<pub-date date-type="collection" publication-format="electronic">
<year>2025</year>
</pub-date>
<pub-date date-type="pub" publication-format="electronic">
<day>30</day><month>05</month><year>2025</year>
</pub-date>
<volume>143</volume>
<issue>2</issue>
<fpage>1713</fpage>
<lpage>1741</lpage>
<history>
<date date-type="received">
<day>09</day>
<month>12</month>
<year>2024</year>
</date>
<date date-type="accepted">
<day>28</day>
<month>4</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2025 The Author.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Published by Tech Science Press.</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMES_62063.pdf"></self-uri>
<abstract>
<p>We present and explore a new shock-capturing particle hydrodynamics approach. Our starting point is a commonly used discretization of smoothed particle hydrodynamics. We enhance this discretization with Roe&#x2019;s approximate Riemann solver, we identify its dissipative terms, and in these terms, we use slope-limited linear reconstruction. All gradients needed for our method are calculated with linearly reproducing kernels that are constructed to enforce the two lowest-order consistency relations. We scrutinize our reproducing kernel implementation carefully on a &#x201C;glass-like&#x201D; particle distribution, and we find that constant and linear functions are recovered to machine precision. We probe our method in a series of challenging 3D benchmark problems ranging from shocks over instabilities to Schulz-Rinne-type vorticity-creating shocks. All of our simulations show excellent agreement with analytic/reference solutions.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Ideal hydrodynamics</kwd>
<kwd>reproducing kernels</kwd>
<kwd>shocks</kwd>
<kwd>instabilities</kwd>
<kwd>smoothed particle hydrodynamics</kwd>
</kwd-group>
<funding-group>
<award-group id="awg1">
<funding-source>Swedish Research Council (VR)</funding-source>
<award-id>2020-05044</award-id>
</award-group>
<award-group id="awg2">
<funding-source>Gravitational Radiation and Electromagnetic Astrophysical Transients</funding-source>
<award-id>2016-06012</award-id>
</award-group>
<award-group id="awg3">
<funding-source>Knut and Alice Wallenberg Foundation</funding-source>
<award-id>2019.0112</award-id>
</award-group>
<award-group id="awg4">
<funding-source>Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany&#x2019;s Excellence Strategy-EXC 2121 &#x201C;Quantum Universe&#x201D;</funding-source>
<award-id>390833306</award-id>
</award-group>
<award-group id="awg5">
<funding-source>European Union&#x2019;s Horizon 2020 Research and Innovation Programme</funding-source>
<award-id>101053985</award-id>
</award-group>
</funding-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>The Smoothed Particle Hydrodynamics (SPH) method was originally developed to solve astrophysical gas dynamics problems [<xref ref-type="bibr" rid="ref-1">1</xref>,<xref ref-type="bibr" rid="ref-2">2</xref>]. In an SPH simulation, the particle distribution automatically adapts to the dynamics of the gas flow, and this has major advantages when, for example, modeling the gravitational collapse of gas clouds that condense into denser filaments and finally form stars. The natural geometric adaptivity of SPH also has advantages in many other contexts where challenging geometries are involved, e.g., in simulating dam breaks, e.g., [<xref ref-type="bibr" rid="ref-3">3</xref>], or fracture processes, e.g., [<xref ref-type="bibr" rid="ref-4">4</xref>], see [<xref ref-type="bibr" rid="ref-5">5</xref>] for a broad range of SPH applications. Since the particles automatically follow the gas flow, this also implies that vacuum is simply modeled by the absence of computational particles. Eulerian methods, in contrast, need to model vacuum as a low-density background gas, and this can cost substantial computational resources even though one is not interested (and nothing is physically going on) in empty space. As an admittedly extreme, but astrophysically relevant example, we show in <xref ref-type="fig" rid="fig-1">Fig. 1</xref> the tidal disruption of two stars by a massive black hole located at the coordinate origin (the simulation is discussed in more detail in [<xref ref-type="bibr" rid="ref-6">6</xref>]). As the stars pass the black hole, they are ripped apart by the hole&#x2019;s tidal forces. One is only interested in the fate of the gas from the disrupted stars, which initially covers only a minute fraction of <inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>9</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> of the space shown in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>. So, in a corresponding Eulerian simulation, one would need to waste essentially all of the computational resources to simulate the uninteresting empty space. Another major advantage of SPH is that it can be formulated in a way that Nature&#x2019;s conservation laws are enforced by construction [<xref ref-type="bibr" rid="ref-7">7</xref>&#x2013;<xref ref-type="bibr" rid="ref-11">11</xref>]. Having Nature&#x2019;s conservation laws built into a simulation gives some confidence that the simulated system behaves similarly to what Nature does.</p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>Illustration of one of SPH&#x2019;s most salient features: the natural treatment of vacuum. The plot shows how two stars have been ripped apart by a black hole (lurking at the coordinate origin) into spaghetti-like, thin gas streams that are held together by the gas&#x2019; self-gravity. The inset shows the initial conditions of the initially spherical stars. The original stars in the inset only cover a fraction of <inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>9</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> of the volume that is shown at late times (t &#x003D; 371 h). Simulation performed with the <monospace>MAGMA2</monospace> code, see Rosswog (2020)</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-1.tif"/>
</fig>
<p>Simulating gas flows with particles is still a relatively young field compared to Eulerian gas dynamics, and much development is still ongoing, both in terms of methodology and in terms of spreading into new research areas. For example, most recently, SPH methods have found their way into general relativistic hydrodynamics where the full spacetime is dynamically evolved together with the fluid, see [<xref ref-type="bibr" rid="ref-12">12</xref>,<xref ref-type="bibr" rid="ref-13">13</xref>], or Chap. 7 in [<xref ref-type="bibr" rid="ref-14">14</xref>]. SPH has initially been criticized for many issues, but essentially all of them have seen major improvements achieved in recent times. For example, SPH has often been criticized for being too dissipative. However, as derived from a Lagrangian, SPH contains zero dissipation, and the criticism goes back to the early days of SPH when simple artificial dissipation schemes were used, in which dissipation was always switched on, whether needed or not. In recent years, much effort has been spent to cure this problem, e.g., by using time-dependent dissipation parameters that only reach substantial values when needed, but not otherwise [<xref ref-type="bibr" rid="ref-15">15</xref>&#x2013;<xref ref-type="bibr" rid="ref-19">19</xref>] or by using slope-limited reconstruction in the artificial dissipation terms [<xref ref-type="bibr" rid="ref-20">20</xref>,<xref ref-type="bibr" rid="ref-21">21</xref>,<xref ref-type="bibr" rid="ref-12">12</xref>,<xref ref-type="bibr" rid="ref-13">13</xref>,<xref ref-type="bibr" rid="ref-22">22</xref>]. The latter approach is very effective even if large constant dissipation parameters are used. For example, some weakly triggered Kelvin-Helmholtz instabilities do not grow when standard, constant dissipation parameters without reconstruction are used, but the same initial conditions lead to a healthy growth of instability when reconstruction is applied; see Fig. 20 in [<xref ref-type="bibr" rid="ref-21">21</xref>].</p>
<p>As an alternative to artificial dissipation, one can also implement Riemann solvers into SPH [<xref ref-type="bibr" rid="ref-23">23</xref>&#x2013;<xref ref-type="bibr" rid="ref-27">27</xref>] to produce sufficient entropy in shocks. However, with this approach, one also needs to ensure that not too much unwanted dissipation is introduced. For example, simply treating particle pairs as Riemann problems, where the left and the right states are given by the particle properties, leads to very dissipative hydrodynamics unless other measures such as limiters or reconstruction techniques similar to Finite Volume schemes are applied. Often, Riemann solver approaches are only benchmarked against shocks, where they perform, by construction, very well. However, such approaches can still be way too dissipative to accurately model the growth of weakly triggered fluid instabilities.</p>
<p>It has also turned out that the still frequently used cubic spline kernel is not a great choice after all, but substantially better kernels are readily available [<xref ref-type="bibr" rid="ref-18">18</xref>,<xref ref-type="bibr" rid="ref-28">28</xref>&#x2013;<xref ref-type="bibr" rid="ref-30">30</xref>] and replacing the kernel function only requires very small changes to existing codes. It has further been realized that much more accurate gradient estimates [<xref ref-type="bibr" rid="ref-18">18</xref>,<xref ref-type="bibr" rid="ref-31">31</xref>,<xref ref-type="bibr" rid="ref-32">32</xref>] than the standard kernel gradients can be obtained at a moderate additional cost and even without sacrificing the highly valued kernel anti-symmetry, <inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, which is crucial for good numerical conservation, see e.g., Section 2.4 in [<xref ref-type="bibr" rid="ref-8">8</xref>].</p>
<p>Several of the above improvements of SPH have borrowed techniques that are traditionally used in Finite Volume schemes, such as reconstruction, slope-limiting, or Riemann solvers. For example, recent work has explored the application of weighted essentially non-oscillatory (WENO) strategies to SPH; see e.g., [<xref ref-type="bibr" rid="ref-33">33</xref>&#x2013;<xref ref-type="bibr" rid="ref-36">36</xref>]. Apart from &#x201C;enhanced SPH&#x201D;, there is also a class of methods that tries to consistently formulate the ideal gas dynamics equations from the beginning as in Finite Volume methods, though for particles rather than for meshes, see e.g., [<xref ref-type="bibr" rid="ref-37">37</xref>&#x2013;<xref ref-type="bibr" rid="ref-41">41</xref>] for some pioneering work. This also comes with a broad variety of names for relatively similar methods, some of which are &#x201C;proper SPH&#x201D;, some are &#x201C;SPH with elements from Finite Volume methods&#x201D;, and yet others are proper Finite Volume discretizations of the conservation laws written for particles. Among these latter methods, there are formulations for stationary particles (Eulerian), for particles that move with the fluid velocity (Lagrangian) or for particles that move with any other velocity (Adaptive Lagrangian Eulerian or ALE methods); see, e.g., [<xref ref-type="bibr" rid="ref-42">42</xref>]. Therefore, the boundaries between different methods are blurred, and it becomes a matter of semantics or taste how to call a given method. In summary, many of the issues that SPH has been criticized for can be considered as essentially solved, and modern SPH formulations can accurately solve very challenging gas dynamics problems<xref ref-type="fn" rid="fn-1"><sup>1</sup></xref><fn id="fn-1"><label>1</label><p>For the publication [<xref ref-type="bibr" rid="ref-21">21</xref>], the author collected in the computational astrophysics community a large set of test problems &#x201C;that SPH cannot do&#x201D;, but please see the (excellent) results in this paper.</p></fn>, for example [<xref ref-type="bibr" rid="ref-20">20</xref>&#x2013;<xref ref-type="bibr" rid="ref-22">22</xref>].</p>
<p>One issue that has been strongly improved by the above measures but is usually still not exactly enforced in the standard SPH approaches is the lack of zero-order consistency. In simple words, the SPH approximation makes use of weighted kernel sums over neighboring particles, but the weights in these sums do not add up exactly to unity; see our discussion in <xref ref-type="sec" rid="s2_4">Section 2.4</xref>. Whether this is an issue in practical applications or not depends on the kernels/neighbor numbers that are used and the tested problem considered, but it is desirable to avoid the issue in the first place. Without zeroth-order consistency, not even constant functions are reproduced exactly.</p>
<p>In this paper, we formulate and explore a new approach, in which we start from one of the commonly used SPH discretizations, but a) we introduce Roe&#x2019;s approximate solver, b) we identify the dissipative terms in the Riemann solver, and in these terms, we use slope-limited reconstruction, and finally, c) we use linearly reproducing kernels so that constant and linear functions are reproduced to machine precision. We carefully scrutinize our implementation of the reproducing kernels and put the new method to the test with many very challenging benchmark tests, ranging from shocks over fluid instabilities to vorticity creating Schulz-Rinne shocks [<xref ref-type="bibr" rid="ref-43">43</xref>]. All of these tests are performed in three spatial dimensions. In <xref ref-type="sec" rid="s2">Section 2</xref>, we discuss all the elements involved in our approach, and in <xref ref-type="sec" rid="s3">Section 3</xref>, we present and discuss our benchmark tests before we summarize and conclude in <xref ref-type="sec" rid="s4">Section 4</xref>.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Methodology</title>
<sec id="s2_1">
<label>2.1</label>
<title>Particle Hydrodynamics Formulation with a Riemann Solver</title>
<p>In the following, we will label the particles with <inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:mi>k</mml:mi></mml:math></inline-formula>, where <inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:mi>a</mml:mi></mml:math></inline-formula> is usually the particle of interest, <inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:mi>b</mml:mi></mml:math></inline-formula> a neighbor particle, and <inline-formula id="ieqn-8"><mml:math id="mml-ieqn-8"><mml:mi>k</mml:mi></mml:math></inline-formula> can be either of them. We also use the Einstein sum convention with repeated indices, which implies a sum from 1 to 3, and we usually use <inline-formula id="ieqn-9"><mml:math id="mml-ieqn-9"><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>l</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-10"><mml:math id="mml-ieqn-10"><mml:mi>m</mml:mi></mml:math></inline-formula> for the summation indices. Since we are working in a non-relativistic context and do not have to distinguish between co- and contravariant vectors, it has no particular meaning whether an index is written as a subscript or a superscript; readability considerations mostly guide this.</p>
<p>Our starting point is a common set of Smoothed Particle Hydrodynamics (SPH) equations [<xref ref-type="bibr" rid="ref-24">24</xref>,<xref ref-type="bibr" rid="ref-44">44</xref>,<xref ref-type="bibr" rid="ref-27">27</xref>]
<disp-formula id="eqn-1"><label>(1)</label><mml:math id="mml-eqn-1" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-2"><label>(2)</label><mml:math id="mml-eqn-2" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mfrac><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-3"><label>(3)</label><mml:math id="mml-eqn-3" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mfrac><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>In <xref ref-type="disp-formula" rid="eqn-2">Eqs. (2)</xref> and <xref ref-type="disp-formula" rid="eqn-3">(3)</xref>, the index <inline-formula id="ieqn-11"><mml:math id="mml-ieqn-11"><mml:mi>a</mml:mi></mml:math></inline-formula> at the nabla operator indicates that it is evaluated with respect to particle <inline-formula id="ieqn-12"><mml:math id="mml-ieqn-12"><mml:mi>a</mml:mi></mml:math></inline-formula> (and not <inline-formula id="ieqn-13"><mml:math id="mml-ieqn-13"><mml:mi>b</mml:mi></mml:math></inline-formula>). As usual, one has the choice between either solving the continuity equation directly or obtaining the density <inline-formula id="ieqn-14"><mml:math id="mml-ieqn-14"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:math></inline-formula> through a kernel-weighted sum over neighbors, see <xref ref-type="disp-formula" rid="eqn-1">Eq. (1)</xref>, which is our choice here. The continuity equation approach has been found to be advantageous in some recent studies [<xref ref-type="bibr" rid="ref-22">22</xref>,<xref ref-type="bibr" rid="ref-27">27</xref>], but we choose here the summation approach, since it is <italic>guaranteed</italic> to deliver a strictly positive density due to the positive definite kernels <italic>W</italic> that we are using. Alternatives to this approach will be explored in the future. The size of the kernel support is determined by the smoothing length <inline-formula id="ieqn-15"><mml:math id="mml-ieqn-15"><mml:mi>h</mml:mi></mml:math></inline-formula>, <italic>P</italic> denotes the gas pressure, <inline-formula id="ieqn-16"><mml:math id="mml-ieqn-16"><mml:mi>u</mml:mi></mml:math></inline-formula> is the specific internal energy, and <inline-formula id="ieqn-17"><mml:math id="mml-ieqn-17"><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub></mml:math></inline-formula>. Often, the density estimation, <xref ref-type="disp-formula" rid="eqn-1">Eq. (1)</xref>, is performed &#x201C;as locally as possible&#x201D; in the sense that the kernel of a particle <inline-formula id="ieqn-18"><mml:math id="mml-ieqn-18"><mml:mi>a</mml:mi></mml:math></inline-formula> is evaluated with its smoothing length, <inline-formula id="ieqn-19"><mml:math id="mml-ieqn-19"><mml:msub><mml:mi>h</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:math></inline-formula>. To be consistent with our later choices, see <xref ref-type="sec" rid="s2_4">Section 2.4</xref>, we choose here
<disp-formula id="eqn-4"><label>(4)</label><mml:math id="mml-eqn-4" display="block"><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>While we have written the above equations in a commonly used way, it is worth keeping in mind that the kernel gradient can be explicitly written (for some smoothing length <inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20"><mml:mi>h</mml:mi></mml:math></inline-formula>) as
<disp-formula id="eqn-5"><label>(5)</label><mml:math id="mml-eqn-5" display="block"><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mfrac><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mi>h</mml:mi></mml:mfrac><mml:mo>,</mml:mo></mml:math></disp-formula>where <inline-formula id="ieqn-21"><mml:math id="mml-ieqn-21"><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi>h</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-22"><mml:math id="mml-ieqn-22"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:math></inline-formula> is the unit vector pointing from particle <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:mi>b</mml:mi></mml:math></inline-formula> to particle <inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:mi>a</mml:mi></mml:math></inline-formula>. With this, <xref ref-type="disp-formula" rid="eqn-3">Eq.(3)</xref> can also be written as
<disp-formula id="eqn-6"><label>(6)</label><mml:math id="mml-eqn-6" display="block"><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mfrac><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:msub><mml:mi>h</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mfrac><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mfrac><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:math></disp-formula>where the velocities projected on the connection line are marked with a tilde.</p>
<p>In gas dynamics, seemingly harmless sound waves can steepen into shock waves, and for their correct treatment, dissipation is needed. So far, however, the equations are entirely nondissipative, and to handle shocks, they need to be enhanced by mechanisms that produce sufficient (but not too much) dissipation to obtain non-oscillatory solutions in shocks. As outlined in the introduction, an often used approach is artificial viscosity, which has seen many improvements in recent times, including more accurate ways to steer dissipation parameters [<xref ref-type="bibr" rid="ref-17">17</xref>&#x2013;<xref ref-type="bibr" rid="ref-19">19</xref>], applying reconstruction techniques in dissipative terms [<xref ref-type="bibr" rid="ref-20">20</xref>&#x2013;<xref ref-type="bibr" rid="ref-22">22</xref>]. These new developments have also been transferred to (general) relativistic hydrodynamics [<xref ref-type="bibr" rid="ref-12">12</xref>,<xref ref-type="bibr" rid="ref-13">13</xref>,<xref ref-type="bibr" rid="ref-45">45</xref>]. These new approaches have turned out to be robust and accurate and to produce very little unwanted dissipation. In our understanding, such modern artificial dissipation approaches are on par with approximate Riemann solvers.</p>
<p>Despite the very good performance of modern artificial viscosity schemes, we want to explore here the case where dissipation is provided by a Riemann solver [<xref ref-type="bibr" rid="ref-46">46</xref>]. The main idea is to solve (approximately) a one-dimensional Riemann problem at the midpoint between each pair of interacting particles <inline-formula id="ieqn-25"><mml:math id="mml-ieqn-25"><mml:mi>a</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:mi>b</mml:mi></mml:math></inline-formula>, as sketched in <xref ref-type="fig" rid="fig-2">Fig. 2</xref>. More specifically, we replace averages of particle values by the solution of a Riemann problem
<disp-formula id="eqn-7"><label>(7)</label><mml:math id="mml-eqn-7" display="block"><mml:mfrac><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mo stretchy="false">&#x2192;</mml:mo><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mo stretchy="false">&#x2192;</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo>,</mml:mo></mml:math></disp-formula>where the <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:mo>&#x2217;</mml:mo></mml:math></inline-formula> labels the contact discontinuity state in a Riemann problem, see e.g., [<xref ref-type="bibr" rid="ref-46">46</xref>], and the <inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:math></inline-formula>-index refers to the solution between state <inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:mi>a</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:mi>b</mml:mi></mml:math></inline-formula>. As before, the tilde denotes the velocities projected onto the line connecting two particles
<disp-formula id="eqn-8"><label>(8)</label><mml:math id="mml-eqn-8" display="block"><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>To add dissipation, Riemann problems are solved for each particle and its neighbour particles</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-2.tif"/>
</fig>
<p>With the substitutions <xref ref-type="disp-formula" rid="eqn-7">Eq. (7)</xref> we have
<disp-formula id="eqn-9"><label>(9)</label><mml:math id="mml-eqn-9" display="block"><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo stretchy="false">)</mml:mo></mml:math></disp-formula>so that the hydrodynamics equations, now with dissipation, read
<disp-formula id="eqn-10"><label>(10)</label><mml:math id="mml-eqn-10" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-11"><label>(11)</label><mml:math id="mml-eqn-11" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>2</mml:mn><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mfrac><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-12"><label>(12)</label><mml:math id="mml-eqn-12" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mn>2</mml:mn><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mfrac><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where we have used <inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:msubsup><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>.</p>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Dissipation in the Roe Solver</title>
<p>We use Roe&#x2019;s approximate Riemann solver [<xref ref-type="bibr" rid="ref-47">47</xref>] for the star state:
<disp-formula id="eqn-13"><label>(13)</label><mml:math id="mml-eqn-13" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mrow><mml:mtext>RL</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:mfrac><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-14"><label>(14)</label><mml:math id="mml-eqn-14" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mrow><mml:mtext>RL</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mrow><mml:mtext>RL</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:mfrac><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where the &#x201C;densitized&#x201D; Roe-averaged Lagrangian sound speed (the dimension is density times velocity) is
<disp-formula id="eqn-15"><label>(15)</label><mml:math id="mml-eqn-15" display="block"><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mrow><mml:mtext>RL</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mo>,</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msqrt><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:msqrt><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msqrt><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:msqrt></mml:mrow><mml:mrow><mml:msqrt><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:msqrt><mml:mo>+</mml:mo><mml:msqrt><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:msqrt></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:math></disp-formula>and <inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mrow><mml:mtext>s,k</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the sound speed of particle <inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:mi>k</mml:mi></mml:math></inline-formula>. If, for a moment, we ignore the terms that involve the pressure and velocity differences in <xref ref-type="disp-formula" rid="eqn-13">Eqs. (13)</xref> and <xref ref-type="disp-formula" rid="eqn-14">(14)</xref>, we have
<disp-formula id="eqn-16"><label>(16)</label><mml:math id="mml-eqn-16" display="block"><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo>&#x2248;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo>&#x2248;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>By inserting these expressions into <xref ref-type="disp-formula" rid="eqn-11">Eqs. (11)</xref> and <xref ref-type="disp-formula" rid="eqn-12">(12)</xref> we obviously recover the inviscid Eqs. <xref ref-type="disp-formula" rid="eqn-2">(2)</xref> and <xref ref-type="disp-formula" rid="eqn-3">(3)</xref>, therefore <italic>the terms involving the differences in <xref ref-type="disp-formula" rid="eqn-13">Eqs. (13)</xref> and <xref ref-type="disp-formula" rid="eqn-14">(14)</xref> are responsible for the dissipation</italic>. One may thus try to cure potentially excessive dissipation by modifying these terms. We approach this issue here by applying the reconstructed pressure and velocity values <italic>in the dissipative terms</italic>. So, for perfectly reconstructed smooth flows, where the reconstructed values on both sides of the midpoint are the same and, therefore, the dissipative terms vanish, one effectively solves the inviscid hydrodynamics equations.</p>
</sec>
<sec id="s2_3">
<label>2.3</label>
<title>Reconstruction in the Dissipative Terms</title>
<p>Our strategy to reduce dissipation is to use, in the dissipative terms of <xref ref-type="disp-formula" rid="eqn-13">Eqs. (13)</xref> and <xref ref-type="disp-formula" rid="eqn-14">(14)</xref>, values of <italic>P</italic> and <inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> that are reconstructed to the midpoint of each particle pair, <inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:msubsup><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>mid</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mn>0.5</mml:mn><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, see <xref ref-type="fig" rid="fig-2">Fig. 2</xref>, left panel. So, at each interparticle midpoint, one has <italic>P</italic>/<inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> values that are reconstructed once from the <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:mi>a</mml:mi></mml:math></inline-formula>-side and once from the <inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:mi>b</mml:mi></mml:math></inline-formula>-side. Explicitly, the linearly reconstructed velocity components read
<disp-formula id="eqn-17"><label>(17)</label><mml:math id="mml-eqn-17" display="block"><mml:msubsup><mml:mi>v</mml:mi><mml:mi>a</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">r</mml:mi><mml:mi mathvariant="normal">e</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msubsup><mml:mi>v</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msubsup><mml:mi>v</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>
<disp-formula id="eqn-18"><label>(18)</label><mml:math id="mml-eqn-18" display="block"><mml:msubsup><mml:mi>v</mml:mi><mml:mi>b</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">r</mml:mi><mml:mi mathvariant="normal">e</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msubsup><mml:mi>v</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msubsup><mml:mi>v</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>the specific internal energy is
<disp-formula id="eqn-19"><label>(19)</label><mml:math id="mml-eqn-19" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msubsup><mml:mi>u</mml:mi><mml:mi>a</mml:mi><mml:mrow><mml:mrow><mml:mtext>rec</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-20"><label>(20)</label><mml:math id="mml-eqn-20" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msubsup><mml:mi>u</mml:mi><mml:mi>b</mml:mi><mml:mrow><mml:mrow><mml:mtext>rec</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>and the density
<disp-formula id="eqn-21"><label>(21)</label><mml:math id="mml-eqn-21" display="block"><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi><mml:mrow><mml:mrow><mml:mtext>rec</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>
<disp-formula id="eqn-22"><label>(22)</label><mml:math id="mml-eqn-22" display="block"><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi><mml:mrow><mml:mrow><mml:mtext>rec</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>With the reconstructed values of internal energy and density, we can calculate the corresponding pressure values via our equation of state, <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:mi>P</mml:mi><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>&#x03B3;</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mi>&#x03C1;</mml:mi><mml:mi>u</mml:mi></mml:math></inline-formula>.</p>
<p>The quantity <inline-formula id="ieqn-41"><mml:math id="mml-ieqn-41"><mml:mi mathvariant="normal">&#x03A8;</mml:mi></mml:math></inline-formula> in the above reconstruction equations is a suitable slope limiter function. Commonly used slope limiters are <monospace>minmod</monospace>
<disp-formula id="eqn-23"><label>(23)</label><mml:math id="mml-eqn-23" display="block"><mml:msub><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mrow><mml:mrow><mml:mtext>mm</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi mathvariant="normal">S</mml:mi><mml:mi mathvariant="normal">G</mml:mi><mml:mi mathvariant="normal">N</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mrow><mml:mi mathvariant="normal">S</mml:mi><mml:mi mathvariant="normal">G</mml:mi><mml:mi mathvariant="normal">N</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>]</mml:mo></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mrow><mml:mtext>MIN</mml:mtext></mml:mrow></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>x</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>y</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:math></disp-formula>the <monospace>vanLeer limiter</monospace> [<xref ref-type="bibr" rid="ref-48">48</xref>]
<disp-formula id="eqn-24"><label>(24)</label><mml:math id="mml-eqn-24" display="block"><mml:msub><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mrow><mml:mrow><mml:mtext>vL</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi><mml:mo>+</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mtd><mml:mtd><mml:mrow><mml:mrow><mml:mtext>if</mml:mtext></mml:mrow></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mi>x</mml:mi><mml:mi>y</mml:mi><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mrow><mml:mtext>otherwise</mml:mtext></mml:mrow></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula>the vanLeer monotonized Central (<monospace>vanLeerMC</monospace>) [<xref ref-type="bibr" rid="ref-48">48</xref>]
<disp-formula id="eqn-25"><label>(25)</label><mml:math id="mml-eqn-25" display="block"><mml:msub><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mrow><mml:mrow><mml:mtext>vLMC</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">S</mml:mi><mml:mi mathvariant="normal">G</mml:mi><mml:mi mathvariant="normal">N</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mi mathvariant="normal">M</mml:mi><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">N</mml:mi></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi mathvariant="normal">x</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi mathvariant="normal">x</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mrow><mml:mtext>if</mml:mtext></mml:mrow></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mi>x</mml:mi><mml:mi>y</mml:mi><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mrow><mml:mtext>otherwise</mml:mtext></mml:mrow></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula>and the <monospace>vanAlbada limiter</monospace> [<xref ref-type="bibr" rid="ref-49">49</xref>]
<disp-formula id="eqn-26"><label>(26)</label><mml:math id="mml-eqn-26" display="block"><mml:msub><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mrow><mml:mrow><mml:mtext>vA</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>&#x03F5;</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>y</mml:mi><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mi>y</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>&#x03F5;</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>y</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:msup><mml:mi>&#x03F5;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mtd><mml:mtd><mml:mrow><mml:mrow><mml:mtext>if</mml:mtext></mml:mrow></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mi>x</mml:mi><mml:mi>y</mml:mi><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mrow><mml:mtext>otherwise</mml:mtext></mml:mrow></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>The latter is insensitive to the exact value of <inline-formula id="ieqn-42"><mml:math id="mml-ieqn-42"><mml:mi>&#x03F5;</mml:mi></mml:math></inline-formula>, here, we use <inline-formula id="ieqn-43"><mml:math id="mml-ieqn-43"><mml:msup><mml:mi>&#x03F5;</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>6</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. In <xref ref-type="disp-formula" rid="eqn-19">Eqs. (19)</xref> to <xref ref-type="disp-formula" rid="eqn-22">(22)</xref>, the slope limiter <inline-formula id="ieqn-44"><mml:math id="mml-ieqn-44"><mml:mi mathvariant="normal">&#x03A8;</mml:mi></mml:math></inline-formula> is to be applied to each component of the gradients.</p>
</sec>
<sec id="s2_4">
<label>2.4</label>
<title>Linearly Reproducing Kernel (RPK) Approximations</title>
<p>One of the main criticisms of the standard SPH method is that it, in general, does not exactly reproduce constant or linear functions. In the standard SPH-discretization the approximation of a function <inline-formula id="ieqn-45"><mml:math id="mml-ieqn-45"><mml:mi>f</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> reads
<disp-formula id="eqn-27"><label>(27)</label><mml:math id="mml-eqn-27" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:mrow><mml:mover><mml:mi>f</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi mathvariant="normal">&#x03A6;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where we have abbreviated <inline-formula id="ieqn-46"><mml:math id="mml-ieqn-46"><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:math></inline-formula> as <inline-formula id="ieqn-47"><mml:math id="mml-ieqn-47"><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:math></inline-formula> and the smoothing length <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:mi>h</mml:mi></mml:math></inline-formula> should be thought of as a function of <inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>. After the second equal sign, we have abbreviated the product <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> as weight function <inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:msub><mml:mi mathvariant="normal">&#x03A6;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. As an example, if all function values would be the same, <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math></inline-formula>, then the function approximation should yield <inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:msub><mml:mi>f</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math></inline-formula>, but the standard SPH approximation finds
<disp-formula id="eqn-28"><label>(28)</label><mml:math id="mml-eqn-28" display="block"><mml:mrow><mml:mover><mml:mi>f</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:mfrac><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mfrac><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2248;</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>which is approximately, but not exactly, equal to the desired value, because the sum is not guaranteed to yield exactly unity. More systematically, one can expand <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:math></inline-formula> (i.e., the function <inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:mi>f</mml:mi></mml:math></inline-formula> at the position <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:mi>b</mml:mi></mml:math></inline-formula>) around <inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, insert this into <xref ref-type="disp-formula" rid="eqn-27">Eq. (27)</xref> to find
<disp-formula id="eqn-29"><label>(29)</label><mml:math id="mml-eqn-29" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:mrow><mml:mover><mml:mi>f</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:mrow><mml:mo>[</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>f</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:msub><mml:mi>r</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mrow><mml:mrow><mml:mtext>h.o.t.</mml:mtext></mml:mrow></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi mathvariant="normal">&#x03A6;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi mathvariant="normal">&#x03A6;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>f</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:msub><mml:mi>r</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x03A6;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mrow><mml:mrow><mml:mtext>h.o.t.</mml:mtext></mml:mrow></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where higher order terms are abbreviated as &#x201C;h.o.t&#x201D;. This implies, not too surprisingly, that for a good approximation, <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:mrow><mml:mover><mml:mi>f</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2248;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, the lowest order <italic>consistency relations</italic>
<disp-formula id="eqn-30"><label>(30)</label><mml:math id="mml-eqn-30" display="block"><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi mathvariant="normal">&#x03A6;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>b</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi mathvariant="normal">&#x03A6;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:math></disp-formula>should be fulfilled. Standard SPH usually fulfils this well in initial conditions (where particles are often placed on some type of lattice), but it does not enforce these conditions during evolution. The conditions are well fulfilled when good kernels (e.g., of the Wendland family [<xref ref-type="bibr" rid="ref-28">28</xref>]) with large neighbour numbers are used [<xref ref-type="bibr" rid="ref-18">18</xref>], but this, of course, comes at the price of expensive sums over many neighboring particles.</p>
<p>The consistency relations <xref ref-type="disp-formula" rid="eqn-30">Eq. (30)</xref>, however, can also be enforced by construction, e.g., in the so-called reproducing kernel method [<xref ref-type="bibr" rid="ref-50">50</xref>]. One can, for example, enhance the kernel functions with additional parameters <italic>A</italic> and <inline-formula id="ieqn-59"><mml:math id="mml-ieqn-59"><mml:msup><mml:mi>B</mml:mi><mml:mi>i</mml:mi></mml:msup></mml:math></inline-formula>,
<disp-formula id="eqn-31"><label>(31)</label><mml:math id="mml-eqn-31" display="block"><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:msubsup><mml:mi>B</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo>]</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>where <inline-formula id="ieqn-60"><mml:math id="mml-ieqn-60"><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is given by <xref ref-type="disp-formula" rid="eqn-4">Eq. (4)</xref>. One can then determine the four unknown numbers <italic>A</italic> and <inline-formula id="ieqn-61"><mml:math id="mml-ieqn-61"><mml:msup><mml:mi>B</mml:mi><mml:mi>i</mml:mi></mml:msup></mml:math></inline-formula> by enforcing the four discrete consistency relations so that
<disp-formula id="eqn-32"><label>(32)</label><mml:math id="mml-eqn-32" display="block"><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:math></disp-formula>is fulfilled at every particle position <inline-formula id="ieqn-62"><mml:math id="mml-ieqn-62"><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub></mml:math></inline-formula>. Since these kernels <inline-formula id="ieqn-63"><mml:math id="mml-ieqn-63"><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> reproduce by construction constant and linear functions exactly (i.e., to floating point accuracy), they are usually referred to as (linearly) reproducing kernels (RPKs). Reconstructing kernels for higher-order polynomials could be designed similarly, but at the price of lengthy and computationally expensive-to-evaluate expressions. We, therefore, restrict ourselves here to linear order. Since the <inline-formula id="ieqn-64"><mml:math id="mml-ieqn-64"><mml:msup><mml:mi>B</mml:mi><mml:mi>i</mml:mi></mml:msup></mml:math></inline-formula> are in general non-zero, the kernels <inline-formula id="ieqn-65"><mml:math id="mml-ieqn-65"><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> are not guaranteed to be radial as standard SPH kernels, and therefore, angular momentum conservation is difficult to enforce exactly. In SPH, angular momentum conservation is usually a consequence of the interparticle forces pointing along the connecting vectors between a particle <inline-formula id="ieqn-66"><mml:math id="mml-ieqn-66"><mml:mi>a</mml:mi></mml:math></inline-formula> and a particle <inline-formula id="ieqn-67"><mml:math id="mml-ieqn-67"><mml:mi>b</mml:mi></mml:math></inline-formula>, <inline-formula id="ieqn-68"><mml:math id="mml-ieqn-68"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, together with the kernel being anti-symmetric, <inline-formula id="ieqn-69"><mml:math id="mml-ieqn-69"><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, see Section 2.4 in [<xref ref-type="bibr" rid="ref-8">8</xref>] for a detailed discussion. It is, however, still possible to write a set of equations that conserves energy and momentum (and mass if density summation is used), but not necessarily angular momentum. In practice, however, this does not seem to be a major concern; for example, the authors of [<xref ref-type="bibr" rid="ref-20">20</xref>] find with their artificial viscosity-based RPK-SPH approach in typical tests violations of exact angular momentum conservation on the sub-percent level.</p>
<p>The gradient of <inline-formula id="ieqn-70"><mml:math id="mml-ieqn-70"><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> can be calculated in a straight-forward way as
<disp-formula id="eqn-33"><label>(33)</label><mml:math id="mml-eqn-33" display="block"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>k</mml:mi></mml:msup><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msubsup><mml:mi>B</mml:mi><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:msubsup><mml:mi>B</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:msubsup><mml:mi>B</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi>A</mml:mi><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi>B</mml:mi><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>Now, taking the nabla operator concerning particle <inline-formula id="ieqn-71"><mml:math id="mml-ieqn-71"><mml:mi>b</mml:mi></mml:math></inline-formula>, one finds
<disp-formula id="eqn-34"><label>(34)</label><mml:math id="mml-eqn-34" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>k</mml:mi></mml:msup><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msubsup><mml:mi>B</mml:mi><mml:mi>b</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:msubsup><mml:mi>B</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mspace width="1em" /><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:msubsup><mml:mi>B</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi>A</mml:mi><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>b</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi>B</mml:mi><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msubsup><mml:mi>B</mml:mi><mml:mi>b</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:msubsup><mml:mi>B</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mspace width="1em" /><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>B</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi>A</mml:mi><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>b</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi>B</mml:mi><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where we have used <inline-formula id="ieqn-72"><mml:math id="mml-ieqn-72"><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-73"><mml:math id="mml-ieqn-73"><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-74"><mml:math id="mml-ieqn-74"><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. The parameters <italic>A</italic> and <inline-formula id="ieqn-75"><mml:math id="mml-ieqn-75"><mml:msup><mml:mi>B</mml:mi><mml:mi>i</mml:mi></mml:msup></mml:math></inline-formula> and their derivatives, which are needed for <inline-formula id="ieqn-76"><mml:math id="mml-ieqn-76"><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, can then be calculated by straightforward algebra. We first define discrete moments at position <inline-formula id="ieqn-77"><mml:math id="mml-ieqn-77"><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub></mml:math></inline-formula> as
<disp-formula id="eqn-35"><label>(35)</label><mml:math id="mml-eqn-35" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2261;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-36"><label>(36)</label><mml:math id="mml-eqn-36" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2261;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-37"><label>(37)</label><mml:math id="mml-eqn-37" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2261;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>j</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>and their derivatives read
<disp-formula id="eqn-38"><label>(38)</label><mml:math id="mml-eqn-38" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>M</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2261;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-39"><label>(39)</label><mml:math id="mml-eqn-39" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2261;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msup><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-40"><label>(40)</label><mml:math id="mml-eqn-40" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2261;</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">[</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>j</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:msup><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>j</mml:mi></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:msup><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">]</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>With the moments and their derivatives at hand, one can calculate the kernel parameters
<disp-formula id="eqn-41"><label>(41)</label><mml:math id="mml-eqn-41" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>A</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-42"><label>(42)</label><mml:math id="mml-eqn-42" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msubsup><mml:mi>B</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>and their somewhat lengthy but otherwise straightforward calculable derivatives
<disp-formula id="eqn-43"><label>(43)</label><mml:math id="mml-eqn-43" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>A</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>A</mml:mi><mml:mi>a</mml:mi><mml:mn>2</mml:mn></mml:msubsup><mml:mo stretchy="false">[</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>M</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>m</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">]</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>and
<disp-formula id="eqn-44"><label>(44)</label><mml:math id="mml-eqn-44" display="block"><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi>B</mml:mi><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mtext>&#x00A0;</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>2</mml:mn><mml:mrow><mml:mi>m</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mn>1</mml:mn><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>With the linearly reproducing kernels now at hand, we can approximate a function <italic>F</italic> via
<disp-formula id="eqn-45"><label>(45)</label><mml:math id="mml-eqn-45" display="block"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>F</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>and its derivative via
<disp-formula id="eqn-46"><label>(46)</label><mml:math id="mml-eqn-46" display="block"><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>r</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>F</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>While these expressions look very similar to standard SPH approximations, they exactly reproduce linear functions on a discrete level, which the SPH equations do not.</p>
<sec id="s2_4_1">
<title>Scrutinizing Our Implementation</title>
<p>To test our implementation of the linear reproducing kernels, we start from a relatively regular, but not exactly uniform particle distribution, sometimes referred to as &#x201C;a glass&#x201D;. Our initial particle configuration, see <xref ref-type="fig" rid="fig-3">Fig. 3</xref>, has been produced via a Centroidal Voronoi Tessellation (CVT; [<xref ref-type="bibr" rid="ref-51">51</xref>]) in the computational volume [0.5, 0.5] <inline-formula id="ieqn-78"><mml:math id="mml-ieqn-78"><mml:mo>&#x00D7;</mml:mo></mml:math></inline-formula> [0.5, 0.5] <inline-formula id="ieqn-79"><mml:math id="mml-ieqn-79"><mml:mo>&#x00D7;</mml:mo></mml:math></inline-formula> [0.5, 0.5], and it is further regularized by additional sweeps according to the &#x201C;artificial pressure method&#x201D; (APM), as described in the <monospace>MAGMA2</monospace> paper [<xref ref-type="bibr" rid="ref-21">21</xref>], see especially <xref ref-type="disp-formula" rid="eqn-40">Eq. (40)</xref>. We perform the regularization sweeps for the inner regions while the outer regions remain as boundary particles on the original CVT setup. The resulting particle distribution is therefore most regular in the centre, approaching the somewhat rougher original distribution as one moves away from the centre. This is hard to see by eye, but it is reflected in the SPH errors, as seen below. We now assign functions <inline-formula id="ieqn-80"><mml:math id="mml-ieqn-80"><mml:mi>f</mml:mi></mml:math></inline-formula> to each particle, a) once a constant value <inline-formula id="ieqn-81"><mml:math id="mml-ieqn-81"><mml:msup><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula> and b) the other time we assign a linear function that increases in the <inline-formula id="ieqn-82"><mml:math id="mml-ieqn-82"><mml:mi>x</mml:mi></mml:math></inline-formula>-direction <inline-formula id="ieqn-83"><mml:math id="mml-ieqn-83"><mml:msup><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>2</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi>x</mml:mi></mml:math></inline-formula> with a slope of unity.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>The particle distribution that is used to scrutinize the linear reproducing kernel method. The 3D particle distribution has been set up using a Centroidal Voronoi Tessellation; shown is a slice with a thickness of <inline-formula id="ieqn-84"><mml:math id="mml-ieqn-84"><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>z</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>6</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-3.tif"/>
</fig>
<p>Since by construction the consistency relations, <xref ref-type="disp-formula" rid="eqn-32">Eq. (32)</xref>, are fulfilled <italic>at the particle positions</italic> (i.e., not everywhere in space), we select every 100th particle in the inner regions (so that the absolute value of each coordinate is <inline-formula id="ieqn-85"><mml:math id="mml-ieqn-85"><mml:mo>&#x003C;</mml:mo><mml:mspace width="negativethinmathspace" /><mml:mn>0.4</mml:mn></mml:math></inline-formula>) and at these particles, labelled <inline-formula id="ieqn-86"><mml:math id="mml-ieqn-86"><mml:mi>a</mml:mi></mml:math></inline-formula>, we calculate the standard SPH approximations
<disp-formula id="eqn-47"><label>(47)</label><mml:math id="mml-eqn-47" display="block"><mml:msubsup><mml:mi>f</mml:mi><mml:mi>a</mml:mi><mml:mrow><mml:mrow><mml:mtext>SPH</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>f</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi><mml:mrow><mml:mrow><mml:mtext>SPH</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>as well as the reproducing kernel approximations
<disp-formula id="eqn-48"><label>(48)</label><mml:math id="mml-eqn-48" display="block"><mml:msubsup><mml:mi>f</mml:mi><mml:mi>a</mml:mi><mml:mrow><mml:mrow><mml:mtext>RPK</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>and</mml:mtext></mml:mrow></mml:mrow><mml:mspace width="1em" /><mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>f</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi>a</mml:mi><mml:mrow><mml:mrow><mml:mtext>RPK</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>f</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:math></disp-formula>and compare against the theoretical results of unity for both the function value and the derivative in <inline-formula id="ieqn-87"><mml:math id="mml-ieqn-87"><mml:mi>x</mml:mi></mml:math></inline-formula>-direction.</p>
<p>For the kernel <italic>W</italic> that enters <xref ref-type="disp-formula" rid="eqn-4">Eq. (4)</xref>, we choose, here and in the rest of the paper, a member of the family of harmonic-like kernels [<xref ref-type="bibr" rid="ref-29">29</xref>].
<disp-formula id="eqn-49"><label>(49)</label><mml:math id="mml-eqn-49" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>W</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi>W</mml:mi><mml:mn>8</mml:mn><mml:mrow><mml:mrow><mml:mtext>H</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>8</mml:mn></mml:msub><mml:msup><mml:mi>h</mml:mi><mml:mn>3</mml:mn></mml:msup></mml:mfrac></mml:mstyle><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left right" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mn>1</mml:mn><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mtext>&#x00A0;</mml:mtext><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi>sin</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:mfrac></mml:mstyle><mml:mi>x</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:mfrac></mml:mstyle><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>)</mml:mo></mml:mrow><mml:mn>8</mml:mn></mml:msup></mml:mtd><mml:mtd><mml:mtext>&#x00A0;</mml:mtext><mml:mn>0</mml:mn><mml:mo>&#x003C;</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x003C;</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mrow><mml:mtext>else</mml:mtext></mml:mrow></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-88"><mml:math id="mml-ieqn-88"><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>8</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>1.17851074088357</mml:mn></mml:math></inline-formula> in three dimensions. This kernel was chosen after performing a numerical test in which the ability to reproduce a known density was measured [<xref ref-type="bibr" rid="ref-13">13</xref>]. Our smoothing length is chosen at every time step so that we have exactly 220 contributing neighbor particles, which is a good compromise between accuracy and computational efficiency, see Fig. 1 in [<xref ref-type="bibr" rid="ref-13">13</xref>]. We use a fast tree method [<xref ref-type="bibr" rid="ref-52">52</xref>] to assign the smoothing lengths; for more details see [<xref ref-type="bibr" rid="ref-21">21</xref>]. The approximate values of the constant function (exact result &#x003D; 1; left panel) and the derivative (exact result &#x003D; 1; right panel) are shown in <xref ref-type="fig" rid="fig-4">Fig. 4</xref> with the SPH approximation marked with black and the RPK approximation marked with red dots. The corresponding plot for the related errors is shown in <xref ref-type="fig" rid="fig-5">Fig. 5</xref>. We find an average error in the function approximation of <inline-formula id="ieqn-89"><mml:math id="mml-ieqn-89"><mml:mn>3.1</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for the SPH and <inline-formula id="ieqn-90"><mml:math id="mml-ieqn-90"><mml:mn>2.2</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>14</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for the RPK case; see <xref ref-type="table" rid="table-1">Table 1</xref>. As a reference, we note that if the same test is performed for particles placed on a cubic lattice, we find an average error for the standard SPH approach of <inline-formula id="ieqn-91"><mml:math id="mml-ieqn-91"><mml:mn>7.3</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>6</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. On the &#x201C;glass distribution&#x201D; we find for the <inline-formula id="ieqn-92"><mml:math id="mml-ieqn-92"><mml:mi>x</mml:mi></mml:math></inline-formula>-derivative an average error <inline-formula id="ieqn-93"><mml:math id="mml-ieqn-93"><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mi>f</mml:mi><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mrow><mml:mtext>SPH</mml:mtext></mml:mrow></mml:mrow></mml:msup><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>4.3</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> in the SPH-case, better in the smoother central regions, worse further out, and <inline-formula id="ieqn-94"><mml:math id="mml-ieqn-94"><mml:mn>1.9</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>14</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for RPK-case without noticeable dependence of the error on the location. Again, for reference, the SPH derivative error on a cubic lattice is <inline-formula id="ieqn-95"><mml:math id="mml-ieqn-95"><mml:mn>1.1</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>5</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, so much better than for the glass distribution.</p>
<fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>Approximation of function value (left) and derivative in <inline-formula id="ieqn-96"><mml:math id="mml-ieqn-96"><mml:mi>x</mml:mi></mml:math></inline-formula>-direction (right), the exact result is in both cases <inline-formula id="ieqn-97"><mml:math id="mml-ieqn-97"><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>. Each time we show the SPH-approximation in black, the reproducing kernel (RPK-) result in red</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-4.tif"/>
</fig><fig id="fig-5">
<label>Figure 5</label>
<caption>
<title>Logarithm of the function error (left) and of the error in the <inline-formula id="ieqn-98"><mml:math id="mml-ieqn-98"><mml:mi>x</mml:mi></mml:math></inline-formula>-derivative approximation (right). Each time we show the SPH-approximation in black and the reproducing kernel (RPK-) result in red</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-5.tif"/>
</fig><table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>Average errors in the function and derivative approximation for the particle distribution shown in <xref ref-type="fig" rid="fig-3">Fig. 3</xref> for both the Smoothed Particle Hydrodynamics (SPH) and the reproducing kernel (RPK) approach</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th>To approximate</th>
<th><inline-formula id="ieqn-99"><mml:math id="mml-ieqn-99"><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo mathvariant="bold">=</mml:mo><mml:mn mathvariant="bold">1</mml:mn></mml:math></inline-formula></th>
<th><inline-formula id="ieqn-100"><mml:math id="mml-ieqn-100"><mml:msub><mml:mi mathvariant="bold">&#x2202;</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi></mml:msub><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo mathvariant="bold">=</mml:mo><mml:mn mathvariant="bold">1</mml:mn></mml:math></inline-formula></th>
</tr>
</thead>
<tbody>
<tr>
<td>SPH (glass)</td>
<td><inline-formula id="ieqn-101"><mml:math id="mml-ieqn-101"><mml:mn>3.1</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-102"><mml:math id="mml-ieqn-102"><mml:mn>4.3</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></td>
</tr>
<tr>
<td>RPK (glass)</td>
<td><inline-formula id="ieqn-103"><mml:math id="mml-ieqn-103"><mml:mn>2.2</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>14</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-104"><mml:math id="mml-ieqn-104"><mml:mn>1.9</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>14</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In all fairness, it is worth stating that the SPH-approximation results for <italic>this particle distribution</italic> look rather poor, but the question is whether such noisy particle distributions occur in an SPH simulation in the first place. Much recent work has been invested in designing simulation techniques so that this <italic>does not happen</italic>, for example, by using Wendland kernels with the large neighbor number (typically several hundreds); see, e.g., [<xref ref-type="bibr" rid="ref-11">11</xref>,<xref ref-type="bibr" rid="ref-18">18</xref>]. This typically produces very regular particle distributions, where the error is much smaller than the ones shown here. However, the errors will never be smaller than what one finds for a regular lattice (<inline-formula id="ieqn-105"><mml:math id="mml-ieqn-105"><mml:mo>&#x223C;</mml:mo><mml:mspace width="negativethinmathspace" /><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>5</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>). So, even for close-to-perfect particle distributions, the RPK approximations will be more than nine orders of magnitude more accurate than the standard SPH approach.</p>
</sec>
</sec>
<sec id="s2_5">
<label>2.5</label>
<title>Final Equation Set</title>
<p>One desirable quantity for numerical conservation is the anti-symmetry of the kernel gradient
<disp-formula id="eqn-50"><label>(50)</label><mml:math id="mml-eqn-50" display="block"><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:math></disp-formula>which in typical SPH equations guarantees, in a straightforward way, the numerical conservation of energy and momentum, since in the time derivative of their total values, all terms cancel exactly, as seen, for example, in Section 2.4 in [<xref ref-type="bibr" rid="ref-8">8</xref>]. The usual standard kernel gradients point in the direction of the line connecting two particles, see <xref ref-type="disp-formula" rid="eqn-5">Eq. (5)</xref>; therefore, together with the kernel gradient anti-symmetry, the exact conservation of angular momentum can also be guaranteed. Due to the presence of the vector <inline-formula id="ieqn-106"><mml:math id="mml-ieqn-106"><mml:msup><mml:mi>B</mml:mi><mml:mi>i</mml:mi></mml:msup></mml:math></inline-formula> in <xref ref-type="disp-formula" rid="eqn-31">Eq. (31)</xref> the kernels <inline-formula id="ieqn-107"><mml:math id="mml-ieqn-107"><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow></mml:math></inline-formula> are no longer guaranteed to be radial, and therefore, angular momentum conservation cannot be guaranteed in the same way as in standard SPH. The standard kernel gradient as it enters <xref ref-type="disp-formula" rid="eqn-11">Eqs. (11)</xref> and <xref ref-type="disp-formula" rid="eqn-12">(12)</xref> can also be written as
<disp-formula id="eqn-51"><label>(51)</label><mml:math id="mml-eqn-51" display="block"><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mo>,</mml:mo></mml:math></disp-formula>where we have made use of the anti-symmetry of the kernel gradients. We now replace the gradients of the kernels <italic>W</italic> by the much more accurate gradients of the kernels <inline-formula id="ieqn-108"><mml:math id="mml-ieqn-108"><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow></mml:math></inline-formula>, see <xref ref-type="disp-formula" rid="eqn-33">Eqs. (33)</xref> and <xref ref-type="disp-formula" rid="eqn-34">(34)</xref>, or, in other words, we replace <inline-formula id="ieqn-109"><mml:math id="mml-ieqn-109"><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> by
<disp-formula id="eqn-52"><label>(52)</label><mml:math id="mml-eqn-52" display="block"><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2261;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:math></disp-formula>so that our <italic>final equation set</italic> reads
<disp-formula id="eqn-53"><label>(53)</label><mml:math id="mml-eqn-53" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>W</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-54"><label>(54)</label><mml:math id="mml-eqn-54" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>2</mml:mn><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mfrac><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-55"><label>(55)</label><mml:math id="mml-eqn-55" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mn>2</mml:mn><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mfrac><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:msub><mml:mi>V</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mo>&#x2217;</mml:mo></mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>We also use the gradients <inline-formula id="ieqn-110"><mml:math id="mml-ieqn-110"><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x2207;</mml:mi><mml:mrow><mml:mi>&#x1D4B2;</mml:mi></mml:mrow><mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in the reconstruction process described in <xref ref-type="sec" rid="s2_3">Section 2.3</xref>. As mentioned before, our equation set does not manifestly conserve angular momentum as standard SPH does, but our approach produces excellent results, at least for the broad set of challenging test cases that we show below. We integrate our evolution equations forward in time utilizing a second order total variation diminishing Runge-Kutta scheme [<xref ref-type="bibr" rid="ref-53">53</xref>]. While this works very well in all tests, it is worth stating that time integration can, in principle, introduce numerical non-conservation. For detailed discussions of the role of time integration schemes in energy conservation and for compatible energy discretization schemes, we refer to the recent literature [<xref ref-type="bibr" rid="ref-20">20</xref>,<xref ref-type="bibr" rid="ref-54">54</xref>,<xref ref-type="bibr" rid="ref-55">55</xref>].</p>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>Results</title>
<p>We will explore the performance of <xref ref-type="disp-formula" rid="eqn-53">Eqs. (53)</xref> to <xref ref-type="disp-formula" rid="eqn-55">(55)</xref> in a set of challenging benchmarks involving shocks, instabilities, and complex Schulz-Rinne shocks with vorticity creation [<xref ref-type="bibr" rid="ref-43">43</xref>]. We will each time also explore the performance of the following slope limiters (in order decreasing dissipation): <monospace>minmod</monospace>, <monospace>vanAlbada</monospace>, and <monospace>vanLeerMC</monospace>.</p>
<sec id="s3_1">
<label>3.1</label>
<title>Spherical Blast Wave 1</title>
<p>We start with a three-dimensional shock-tube-type problem. We choose the same parameters as [<xref ref-type="bibr" rid="ref-46">46</xref>] (apart from a shift of the origin): the computational domain is <inline-formula id="ieqn-111"><mml:math id="mml-ieqn-111"><mml:mo stretchy="false">[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> and the initial conditions are chosen as:
<disp-formula id="eqn-56"><label>(56)</label><mml:math id="mml-eqn-56" display="block"><mml:mo stretchy="false">(</mml:mo><mml:mi>&#x03C1;</mml:mi><mml:mo>,</mml:mo><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>,</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mo stretchy="false">(</mml:mo><mml:mn>1.000</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mspace width="1em" /><mml:mrow><mml:mtext>r</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.5</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo stretchy="false">(</mml:mo><mml:mn>0.125</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0.1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mspace width="1em" /><mml:mrow><mml:mtext>else.</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>The solution exhibits a spherical shock wave, a spherical contact surface traveling in the same direction, and a spherical rarefaction wave traveling toward the origin. As initial conditions, we simply placed the <inline-formula id="ieqn-112"><mml:math id="mml-ieqn-112"><mml:msup><mml:mn>200</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> particles on a cubic lattice within <inline-formula id="ieqn-113"><mml:math id="mml-ieqn-113"><mml:mo stretchy="false">[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula>, together with the surrounding &#x201C;frozen&#x201D; particles as the boundary condition.</p>
<p>We show in <xref ref-type="fig" rid="fig-6">Fig. 6</xref> the values of density, velocity and pressure for the <monospace>vanAlbada limiter</monospace>. Despite the initial setup on a cubic lattice, the results are practically perfectly spherically symmetric. The results for the different limiters are merely identical in this case, only on very close inspection, one finds a reminiscence of the grid structure in the case of the <monospace>vanLeerMC limiter</monospace>. In <xref ref-type="fig" rid="fig-7">Fig. 7</xref>, we show our particle results in a strip around the <inline-formula id="ieqn-114"><mml:math id="mml-ieqn-114"><mml:mi>x</mml:mi></mml:math></inline-formula>-axis (<inline-formula id="ieqn-115"><mml:math id="mml-ieqn-115"><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>y</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.018</mml:mn><mml:mo>,</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>z</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.018</mml:mn></mml:math></inline-formula>) compared with a <inline-formula id="ieqn-116"><mml:math id="mml-ieqn-116"><mml:msup><mml:mn>400</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> grid cell calculation with the Eulerian weighted average flux method [<xref ref-type="bibr" rid="ref-46">46</xref>]. Overall, we find excellent agreement. This figure can be compared to Fig. 13 of [<xref ref-type="bibr" rid="ref-21">21</xref>], where the same test was performed at the same resolution but with the <monospace>MAGMA2</monospace> code using matrix inversion gradients and an artificial viscosity prescription that also uses slope-limited reconstruction. For more details on the latter method, see the section &#x201C;Matrix Inversion Method I&#x201D; in [<xref ref-type="bibr" rid="ref-21">21</xref>]. Although both approaches show excellent agreement with the reference solution, the RPK approach of this paper yields a sharper resolved contact discontinuity.</p>
<fig id="fig-6">
<label>Figure 6</label>
<caption>
<title>Spherical blast wave problem 1: density, velocity and pressure, vanAlbada limiter</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-6.tif"/>
</fig><fig id="fig-7">
<label>Figure 7</label>
<caption>
<title>Spherical blast wave problem 1: density, velocity and pressure with a strip around the <italic>x</italic> axis. For this simulation, <inline-formula id="ieqn-117"><mml:math id="mml-ieqn-117"><mml:msup><mml:mn>200</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> particles and the vanAlbada limiter were used, and the reference solution (red line) was obtained by the Eulerian-weighted average flux method (<inline-formula id="ieqn-118"><mml:math id="mml-ieqn-118"><mml:msup><mml:mn>400</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> grid cells, Toro 1999)</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-7.tif"/>
</fig>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Spherical Blast Wave 2</title>
<p>In a second spherical blast wave problem [<xref ref-type="bibr" rid="ref-46">46</xref>] we start from
<disp-formula id="eqn-57"><label>(57)</label><mml:math id="mml-eqn-57" display="block"><mml:mo stretchy="false">(</mml:mo><mml:mi>&#x03C1;</mml:mi><mml:mo>,</mml:mo><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>,</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mo stretchy="false">(</mml:mo><mml:mn>1.0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>2.0</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mspace width="1em" /><mml:mrow><mml:mtext>r</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.5</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo stretchy="false">(</mml:mo><mml:mn>1.0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mspace width="1em" /><mml:mrow><mml:mrow><mml:mtext>else</mml:mtext></mml:mrow></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula>and place again <inline-formula id="ieqn-119"><mml:math id="mml-ieqn-119"><mml:msup><mml:mn>200</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> particles in the same straightforward way as in the first blast wave problem.</p>
<p>We show the numerical solution of this test in <xref ref-type="fig" rid="fig-8">Fig. 8</xref>. Again, deviations from sphericity are minute, and the agreement with the reference solution (Eulerian weighted average flux method with <inline-formula id="ieqn-120"><mml:math id="mml-ieqn-120"><mml:msup><mml:mn>400</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> grid cells [<xref ref-type="bibr" rid="ref-46">46</xref>]), see <xref ref-type="fig" rid="fig-9">Fig. 9</xref>, is excellent. In <xref ref-type="fig" rid="fig-10">Fig. 10</xref>, we zoom in on the density distribution to illustrate the effect of the different slope limiters. Overall, the agreement is very good, but as expected, the <monospace>minmod limiter</monospace> is the most diffusive one. The <monospace>vanLeerMC limiter</monospace> captures best the edges of the rarefaction wave, but at the price of a small overshoot at the shock front. The results can again be compared to the &#x201C;Matrix Inversion method I&#x201D; (see Figs. 14 and 15 in [<xref ref-type="bibr" rid="ref-21">21</xref>]). Overall, the results are very similar, but the RPK-hydrodynamics does not show a density overshoot in the central region as in the older result.</p>
<fig id="fig-8">
<label>Figure 8</label>
<caption>
<title>Spherical blast wave problem 2: density, velocity and pressure, vanAlbada limiter</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-8.tif"/>
</fig><fig id="fig-9">
<label>Figure 9</label>
<caption>
<title>Spherical blast wave problem 2: density, velocity and pressure with a strip around the x axis. For this simulation, <inline-formula id="ieqn-121"><mml:math id="mml-ieqn-121"><mml:msup><mml:mn>200</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> particles and the vanAlbada limiter were used; the reference solution (red line) was obtained by the Eulerian-weighted average flux method (<inline-formula id="ieqn-122"><mml:math id="mml-ieqn-122"><mml:msup><mml:mn>400</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> grid cells, Toro 1999)</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-9.tif"/>
</fig><fig id="fig-10">
<label>Figure 10</label>
<caption>
<title>Spherical blast wave problem 2 (detail): shown is the comparison of the densities for different slope limiters</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-10.tif"/>
</fig>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Sedov Blast</title>
<p>The Sedov-Taylor explosion test, a strong initial point-like explosion expanding into a low-density environment, has an analytic self-similarity solution [<xref ref-type="bibr" rid="ref-56">56</xref>,<xref ref-type="bibr" rid="ref-57">57</xref>]. For an explosion energy <italic>E</italic> and a density of the ambient medium <inline-formula id="ieqn-123"><mml:math id="mml-ieqn-123"><mml:mi>&#x03C1;</mml:mi></mml:math></inline-formula>, the blast wave propagates after a time <inline-formula id="ieqn-124"><mml:math id="mml-ieqn-124"><mml:mi>t</mml:mi></mml:math></inline-formula> to the radius <inline-formula id="ieqn-125"><mml:math id="mml-ieqn-125"><mml:mi>r</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>E</mml:mi><mml:msup><mml:mi>t</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi>&#x03C1;</mml:mi><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>5</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, where <inline-formula id="ieqn-126"><mml:math id="mml-ieqn-126"><mml:mi>&#x03B2;</mml:mi></mml:math></inline-formula> depends on the adiabatic exponent of the gas (<inline-formula id="ieqn-127"><mml:math id="mml-ieqn-127"><mml:mo>&#x2248;</mml:mo><mml:mn>1.15</mml:mn></mml:math></inline-formula> in 3D for the <inline-formula id="ieqn-128"><mml:math id="mml-ieqn-128"><mml:mi mathvariant="normal">&#x0393;</mml:mi><mml:mo>=</mml:mo><mml:mn>5</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>3</mml:mn></mml:math></inline-formula> we use). In the strong explosion limit, the density jumps in the shock front by a factor of <inline-formula id="ieqn-129"><mml:math id="mml-ieqn-129"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x0393;</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x0393;</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>4</mml:mn></mml:math></inline-formula>, where the numerical value refers to our chosen value of <inline-formula id="ieqn-130"><mml:math id="mml-ieqn-130"><mml:mi mathvariant="normal">&#x0393;</mml:mi></mml:math></inline-formula>. Behind the shock, the density drops rapidly and finally vanishes at the center of the explosion.</p>
<p>To set up the test numerically, we distribute <inline-formula id="ieqn-131"><mml:math id="mml-ieqn-131"><mml:msup><mml:mn>256</mml:mn><mml:mn>3</mml:mn></mml:msup></mml:math></inline-formula> SPH particles according to a Centroidal Voronoi Tessellation (CVT) [&#x2212;0.5, 0.5] <inline-formula id="ieqn-132"><mml:math id="mml-ieqn-132"><mml:mo>&#x00D7;</mml:mo></mml:math></inline-formula> [&#x2212;0.5, 0.5] <inline-formula id="ieqn-133"><mml:math id="mml-ieqn-133"><mml:mo>&#x00D7;</mml:mo></mml:math></inline-formula> [&#x2212;0.5, 0.5]. Although this produces already reasonably good initial conditions, they can be further improved by additional sweeps according to our &#x201C;Artificial Pressure Method&#x201D; (APM) [<xref ref-type="bibr" rid="ref-21">21</xref>]. The main idea of the APM is to push each particle to a position where it minimizes its density error. Practically, this is achieved via the following steps: i) start from a trial particle distribution, ii) measure the density at every particle via <xref ref-type="disp-formula" rid="eqn-1">Eq. (1)</xref>, iii) calculate the error in the density compared to a desired density profile, iv) from this error construct an artificial pressure and v) use this artificial pressure in an equation very similar to the hydrodynamic momentum equation to push the particles in a direction where their error decreases. After many such iteration steps, the particles end up in locations where they optimally approximate the desired density profile. Here, we need a uniform density distribution, but the method also works very well for complicated density profiles; see, for example, Fig. 3 in [<xref ref-type="bibr" rid="ref-21">21</xref>]. Even if the differences in the particle distributions are hard to see by eye, they still improve the outcome of the Sedov test. We therefore use 500 of such APM sweeps here. Once the particle distribution is settled, we assign masses so that their density is <inline-formula id="ieqn-134"><mml:math id="mml-ieqn-134"><mml:mi>&#x03C1;</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>. This is done in an iterative way where we first assign a guess value for the masses and then measure the resulting density via <xref ref-type="disp-formula" rid="eqn-1">Eq. (1)</xref> and subsequently correct the particle masses. The iteration is stopped once the density agrees everywhere to better than 0.5% with the desired value. The energy <inline-formula id="ieqn-135"><mml:math id="mml-ieqn-135"><mml:mi>E</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula> is spread across a very small initial radius <italic>R</italic>, and is distributed entirely as internal energy; the specific internal energy <inline-formula id="ieqn-136"><mml:math id="mml-ieqn-136"><mml:mi>u</mml:mi></mml:math></inline-formula> of the particles outside of <italic>R</italic> is entirely negligible (<inline-formula id="ieqn-137"><mml:math id="mml-ieqn-137"><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>10</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> of the central <inline-formula id="ieqn-138"><mml:math id="mml-ieqn-138"><mml:mi>u</mml:mi></mml:math></inline-formula>). For the initial radius <italic>R</italic> we choose twice the interaction radius of the innermost SPH particle. Boundaries play no role in this test as long as the blast does not interact with them. We therefore place &#x201C;frozen&#x201D; particles around the computational volume as boundary particles.</p>
<p>In <xref ref-type="fig" rid="fig-11">Fig. 11</xref>, we show the density evolution (cut through <inline-formula id="ieqn-139"><mml:math id="mml-ieqn-139"><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:math></inline-formula>-pane) of the case with the <monospace>vanAlbada limiter</monospace>. No deviation from spherical symmetry is visible, and the numerical solution for the shock agrees very well with the exact solution (the hard-to-see black line that separates the background density (cyan) from the shocked matter). The density as a function of radius is shown in <xref ref-type="fig" rid="fig-12">Fig. 12</xref>, where each panel shows the result for one limiter. As in the tests before, and some of the later tests, the <monospace>vanAlbada limiter</monospace> performs best. Although here <monospace>minmod</monospace> performs similarly, the <monospace>vanLeerMC limiter</monospace> does not seem to provide enough dissipation and leads to a noisier post-shock region and an overshoot at the shock front. Again, these results can be compared against the <monospace>MAGMA2</monospace> results and -taken at face value- show slightly better agreement with the exact solution. However, this may be, at least in part, because in [<xref ref-type="bibr" rid="ref-21">21</xref>] we used a Wendland kernel with 300 neighbors for the <monospace>MAGMA2</monospace> result, while here we used only 220 neighbor particles.</p>
<fig id="fig-11">
<label>Figure 11</label>
<caption>
<title>Density evolution (<inline-formula id="ieqn-140"><mml:math id="mml-ieqn-140"><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:math></inline-formula>-pane) in a Sedov blast wave test with the <monospace>vanAlbada slope limiter</monospace></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-11.tif"/>
</fig><fig id="fig-12">
<label>Figure 12</label>
<caption>
<title>Impact of the slope limiter on a Sedov blast wave: the result for <monospace>minmod</monospace> is shown in the left panel, for <monospace>vanAlbada</monospace> in the middle and <monospace>vanLeerMC</monospace> in the right panel</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-12.tif"/>
</fig>
</sec>
<sec id="s3_4">
<label>3.4</label>
<title>Banded Kelvin-Helmholtz Instability</title>
<p>Kelvin-Helmholtz (KH) shear instabilities occur in a broad range of environments, e.g., in terrestrial clouds, in mixing processes in novae [<xref ref-type="bibr" rid="ref-58">58</xref>], the amplification of magnetic fields in neutron star mergers [<xref ref-type="bibr" rid="ref-59">59</xref>&#x2013;<xref ref-type="bibr" rid="ref-61">61</xref>] or planetary atmospheres [<xref ref-type="bibr" rid="ref-62">62</xref>], to name just a few examples. Traditional versions of SPH have been shown to struggle with weakly triggered KH instabilities [<xref ref-type="bibr" rid="ref-63">63</xref>,<xref ref-type="bibr" rid="ref-64">64</xref>], although many recent studies with more sophisticated numerical methods yielded very good results [<xref ref-type="bibr" rid="ref-20">20</xref>&#x2013;<xref ref-type="bibr" rid="ref-22">22</xref>]. We focus here on a test setup in which traditional SPH has been shown to fail, even at a rather high resolution in 2D, see [<xref ref-type="bibr" rid="ref-64">64</xref>]. We follow the latter paper (similar setups were used in [<xref ref-type="bibr" rid="ref-20">20</xref>] and [<xref ref-type="bibr" rid="ref-22">22</xref>]), but we use the full 3D code and set up the &#x201C;2D&#x201D; test as a thin 3D slice with <inline-formula id="ieqn-141"><mml:math id="mml-ieqn-141"><mml:mi>N</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>N</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mn>20</mml:mn></mml:math></inline-formula> particles (referred to as <inline-formula id="ieqn-142"><mml:math id="mml-ieqn-142"><mml:mo>&quot;</mml:mo><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>&quot;</mml:mo></mml:math></inline-formula>), For simplicity, the particles are initially placed on a cubic lattice. Periodic boundary conditions are obtained by placing appropriate particle copies outside of the &#x201C;core&#x201D; volume. The test is initialized as
<disp-formula id="eqn-58"><label>(58)</label><mml:math id="mml-eqn-58" display="block"><mml:mi>&#x03C1;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>0.25</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.00</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.25</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>0.25</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.25</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.50</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>0.75</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.50</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.75</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>0.75</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.75</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>1.00</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula>where <inline-formula id="ieqn-143"><mml:math id="mml-ieqn-143"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-144"><mml:math id="mml-ieqn-144"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-145"><mml:math id="mml-ieqn-145"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:math></inline-formula> and <inline-formula id="ieqn-146"><mml:math id="mml-ieqn-146"><mml:mi mathvariant="normal">&#x0394;</mml:mi><mml:mo>=</mml:mo><mml:mn>0.025</mml:mn></mml:math></inline-formula>. The velocity is set up as
<disp-formula id="eqn-59"><label>(59)</label><mml:math id="mml-eqn-59" display="block"><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>0.25</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.00</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.25</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>0.25</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.25</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.50</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>0.75</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.50</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>0.75</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>0.75</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi></mml:mrow></mml:msup><mml:mspace width="1em" /><mml:mrow><mml:mtext>for</mml:mtext></mml:mrow><mml:mtext>&#x00A0;&#x00A0;</mml:mtext><mml:mn>0.75</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mtext>y</mml:mtext></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mn>1.00</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula>with <inline-formula id="ieqn-147"><mml:math id="mml-ieqn-147"><mml:msub><mml:mi>v</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>&#x003D; 0.5, <inline-formula id="ieqn-148"><mml:math id="mml-ieqn-148"><mml:msub><mml:mi>v</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>0.5</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-149"><mml:math id="mml-ieqn-149"><mml:msub><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:math></inline-formula> and a small velocity perturbation in <inline-formula id="ieqn-150"><mml:math id="mml-ieqn-150"><mml:mi>y</mml:mi></mml:math></inline-formula>-direction is introduced as <inline-formula id="ieqn-151"><mml:math id="mml-ieqn-151"><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0.01</mml:mn><mml:mi>sin</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x03C0;</mml:mi><mml:mi>x</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi>&#x03BB;</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> with the perturbation wave length <inline-formula id="ieqn-152"><mml:math id="mml-ieqn-152"><mml:mi>&#x03BB;</mml:mi><mml:mo>=</mml:mo><mml:mn>0.5</mml:mn></mml:math></inline-formula>. In the linear regime, a Kelvin-Helmholtz instability grows in the incompressible limit on a characteristic time scale of
<disp-formula id="eqn-60"><label>(60)</label><mml:math id="mml-eqn-60" display="block"><mml:msub><mml:mi>&#x03C4;</mml:mi><mml:mrow><mml:mrow><mml:mtext>KH</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>&#x03BB;</mml:mi></mml:mrow><mml:mrow><mml:msqrt><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:msqrt><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:math></disp-formula>with <inline-formula id="ieqn-153"><mml:math id="mml-ieqn-153"><mml:msub><mml:mi>&#x03C4;</mml:mi><mml:mrow><mml:mrow><mml:mtext>KH</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x2248;</mml:mo><mml:mn>1.06</mml:mn></mml:math></inline-formula> for the chosen parameters. For our tests, we chose again a polytropic equation of state with exponent <inline-formula id="ieqn-154"><mml:math id="mml-ieqn-154"><mml:mi mathvariant="normal">&#x0393;</mml:mi><mml:mo>=</mml:mo><mml:mn>5</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>3</mml:mn></mml:math></inline-formula>.</p>
<p>We show in <xref ref-type="fig" rid="fig-13">Fig. 13</xref> the density at <inline-formula id="ieqn-155"><mml:math id="mml-ieqn-155"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>2.3</mml:mn></mml:math></inline-formula> (<inline-formula id="ieqn-156"><mml:math id="mml-ieqn-156"><mml:mo>&#x2248;</mml:mo><mml:mn>2.2</mml:mn><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>&#x03C4;</mml:mi><mml:mrow><mml:mrow><mml:mtext>KH</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>) for different resolutions. Even at the lowest resolution of the <inline-formula id="ieqn-157"><mml:math id="mml-ieqn-157"><mml:msup><mml:mn>128</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> particles, we see healthy growth that is already very similar to that of the better-resolved cases. The evolution of the <inline-formula id="ieqn-158"><mml:math id="mml-ieqn-158"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> case is shown in <xref ref-type="fig" rid="fig-14">Fig. 14</xref>. In <xref ref-type="fig" rid="fig-15">Fig. 15</xref>, we show the density at t &#x003D; 3 for the different limiters. As expected, the <monospace>minmod limiter</monospace> is the most dissipative one, and the <monospace>vanLeerMC limiter</monospace> is once again the least dissipative. Similarly to the Sedov test case, however, one may wonder whether the <monospace>vanLeerMC limiter</monospace> allows for enough dissipation, since the results seem somewhat noisy.</p>
<fig id="fig-13">
<label>Figure 13</label>
<caption>
<title>Kelvin-Helmholtz test with <monospace>vanAlbada limiter</monospace> for different resolutions at t &#x003D; 2.3 (<inline-formula id="ieqn-159"><mml:math id="mml-ieqn-159"><mml:mo>&#x2248;</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>2.2</mml:mn><mml:msub><mml:mi>&#x03C4;</mml:mi><mml:mrow><mml:mrow><mml:mtext>KH</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>)</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-13.tif"/>
</fig><fig id="fig-14">
<label>Figure 14</label>
<caption>
<title>Kelvin-Helmholtz test (<inline-formula id="ieqn-160"><mml:math id="mml-ieqn-160"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>) with vanAlbada limiter</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-14.tif"/>
</fig><fig id="fig-15">
<label>Figure 15</label>
<caption>
<title>Kelvin-Helmholtz test (<inline-formula id="ieqn-161"><mml:math id="mml-ieqn-161"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>) at t &#x003D; 3 with different slope limiters</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-15.tif"/>
</fig>
<p>For comparison, traditional SPH implementations struggle with this only weakly triggered instability (<inline-formula id="ieqn-162"><mml:math id="mml-ieqn-162"><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0.01</mml:mn></mml:math></inline-formula>), see, for example, Fig. 9 of [<xref ref-type="bibr" rid="ref-64">64</xref>], where, even at a resolution of <inline-formula id="ieqn-163"><mml:math id="mml-ieqn-163"><mml:msup><mml:mi>512</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> particles, the instability either hardly grows (for the cubic spline kernel, label &#x201C;Ne512&#x201D;) or much too slowly (for the quintic spline kernel, label &#x201C;No512&#x201D;). In <xref ref-type="fig" rid="fig-16">Fig. 16</xref>, left panel, we show the mode growth (calculated exactly as in [<xref ref-type="bibr" rid="ref-64">64</xref>]) for three different resolutions, all using the <monospace>vanLeerMC limiter</monospace>. Their growth rates are compared with a high-resolution reference solution (<inline-formula id="ieqn-164"><mml:math id="mml-ieqn-164"><mml:msup><mml:mn>4096</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> cells) obtained by the PENCIL code [<xref ref-type="bibr" rid="ref-65">65</xref>]. Even our low-resolution case with <inline-formula id="ieqn-165"><mml:math id="mml-ieqn-165"><mml:msup><mml:mn>128</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> particles is reasonably close to the reference solution. To quantify the agreement with the reference solution, we calculate the quantity
<disp-formula id="eqn-61"><label>(61)</label><mml:math id="mml-eqn-61" display="block"><mml:mrow><mml:mi>&#x1D49F;</mml:mi></mml:mrow><mml:mo>&#x2261;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mi>N</mml:mi></mml:mfrac><mml:msqrt><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mi>p</mml:mi><mml:mi>N</mml:mi></mml:munderover><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mrow><mml:mtext>ref</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:msqrt><mml:mo>,</mml:mo></mml:math></disp-formula>where <italic>M</italic> is the mode growth exactly calculated as in [<xref ref-type="bibr" rid="ref-64">64</xref>] for all our data points <inline-formula id="ieqn-166"><mml:math id="mml-ieqn-166"><mml:mi>p</mml:mi></mml:math></inline-formula> and the superscript &#x201C;ref&#x201D; denotes the corresponding value of the reference solution. For the simulations shown in <xref ref-type="fig" rid="fig-16">Fig. 16</xref> <inline-formula id="ieqn-167"><mml:math id="mml-ieqn-167"><mml:mrow><mml:mi>&#x1D49F;</mml:mi></mml:mrow></mml:math></inline-formula> is <inline-formula id="ieqn-168"><mml:math id="mml-ieqn-168"><mml:mn>2.84</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <inline-formula id="ieqn-169"><mml:math id="mml-ieqn-169"><mml:msup><mml:mn>128</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>, <inline-formula id="ieqn-170"><mml:math id="mml-ieqn-170"><mml:mn>7.05</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <inline-formula id="ieqn-171"><mml:math id="mml-ieqn-171"><mml:msup><mml:mn>256</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-172"><mml:math id="mml-ieqn-172"><mml:mn>2.65</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <inline-formula id="ieqn-173"><mml:math id="mml-ieqn-173"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>. In the right panel of <xref ref-type="fig" rid="fig-16">Fig. 16</xref>, we show the impact of the slope limiter in the example of the lowest-resolution runs. The <inline-formula id="ieqn-174"><mml:math id="mml-ieqn-174"><mml:mrow><mml:mi>&#x1D49F;</mml:mi></mml:mrow></mml:math></inline-formula>-values for the right panel (all <inline-formula id="ieqn-175"><mml:math id="mml-ieqn-175"><mml:msup><mml:mn>128</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>) are <inline-formula id="ieqn-176"><mml:math id="mml-ieqn-176"><mml:mn>4.37</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <monospace>minmod</monospace>, <inline-formula id="ieqn-177"><mml:math id="mml-ieqn-177"><mml:mn>2.70</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <monospace>vanAlbada</monospace> and <inline-formula id="ieqn-178"><mml:math id="mml-ieqn-178"><mml:mn>2.84</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <monospace>vanLeerMC</monospace>. In <xref ref-type="fig" rid="fig-17">Fig. 17</xref>, we show the growth rates for the highest resolution (<inline-formula id="ieqn-179"><mml:math id="mml-ieqn-179"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>) again for the different limiters (right panel is a zoom-in of the left one). The corresponding <inline-formula id="ieqn-180"><mml:math id="mml-ieqn-180"><mml:mrow><mml:mi>&#x1D49F;</mml:mi></mml:mrow></mml:math></inline-formula>-values are <inline-formula id="ieqn-181"><mml:math id="mml-ieqn-181"><mml:mn>6.92</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <monospace>minmod</monospace>, <inline-formula id="ieqn-182"><mml:math id="mml-ieqn-182"><mml:mn>3.61</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <monospace>vanAlbada</monospace> and <inline-formula id="ieqn-183"><mml:math id="mml-ieqn-183"><mml:mn>2.65</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for <monospace>vanLeerMC</monospace>. So the most diffusive <monospace>minmod limiter</monospace> grows slowest, while the growth rates of <monospace>vanAlbada</monospace> and <monospace>vanLeerMC</monospace> are very similar (<monospace>vanAlbada</monospace> having a small advantage at <inline-formula id="ieqn-184"><mml:math id="mml-ieqn-184"><mml:msup><mml:mn>128</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> while <monospace>vanLeerMC</monospace> performs slightly better at <inline-formula id="ieqn-185"><mml:math id="mml-ieqn-185"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>).</p>
<fig id="fig-16">
<label>Figure 16</label>
<caption>
<title>Growth of the Kelvin-Helmholtz instability as a function of resolution (<monospace>vanLeerMC limiter</monospace>, left) and for a fixed, low resolution (<inline-formula id="ieqn-186"><mml:math id="mml-ieqn-186"><mml:msup><mml:mn>128</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>) for different slope limiters</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-16.tif"/>
</fig><fig id="fig-17">
<label>Figure 17</label>
<caption>
<title>The growth of the Kelvin-Helmholtz instability for different slope limiters (at <inline-formula id="ieqn-187"><mml:math id="mml-ieqn-187"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>) is shown in the left panel, a zoom-in is shown on the right</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-17.tif"/>
</fig>
</sec>
<sec id="s3_5">
<label>3.5</label>
<title>Cylindrical Kelvin-Helmholtz Instability</title>
<p>As a variant of the Kelvin-Helmholtz instability, we also perform a test in cylindrical symmetry, similar to [<xref ref-type="bibr" rid="ref-66">66</xref>]. To this end, we place particles from a radius of <inline-formula id="ieqn-188"><mml:math id="mml-ieqn-188"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mrow><mml:mtext>BD1</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0.5</mml:mn></mml:math></inline-formula> to <inline-formula id="ieqn-189"><mml:math id="mml-ieqn-189"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mrow><mml:mtext>BD2</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1.5</mml:mn></mml:math></inline-formula>. For the region with <inline-formula id="ieqn-190"><mml:math id="mml-ieqn-190"><mml:mi>r</mml:mi><mml:mo>&#x003C;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>, we use
<disp-formula id="eqn-62"><label>(62)</label><mml:math id="mml-eqn-62" display="block"><mml:mi>&#x03C1;</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mspace width="1em" /><mml:mi>&#x03C9;</mml:mi><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:mspace width="1em" /><mml:mi>P</mml:mi><mml:mo>=</mml:mo><mml:mn>4</mml:mn><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:math></disp-formula>and we also use
<disp-formula id="eqn-63"><label>(63)</label><mml:math id="mml-eqn-63" display="block"><mml:mi>&#x03C1;</mml:mi><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:mspace width="1em" /><mml:mi>&#x03C9;</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mspace width="1em" /><mml:mi>P</mml:mi><mml:mo>=</mml:mo><mml:mn>5</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:math></disp-formula>where <inline-formula id="ieqn-191"><mml:math id="mml-ieqn-191"><mml:mi>&#x03C9;</mml:mi></mml:math></inline-formula> is the angular frequency. In addition, we impose a small radial velocity perturbation on the interface given by
<disp-formula id="eqn-64"><label>(64)</label><mml:math id="mml-eqn-64" display="block"><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mrow><mml:mtext>r</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mi>cos</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mn>10</mml:mn><mml:mtext>&#x00A0;</mml:mtext><mml:mi>&#x03C6;</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>r</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mn>0</mml:mn><mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:math></disp-formula>where <inline-formula id="ieqn-192"><mml:math id="mml-ieqn-192"><mml:mi>&#x03C6;</mml:mi></mml:math></inline-formula> is the azimuthal angle, <inline-formula id="ieqn-193"><mml:math id="mml-ieqn-193"><mml:msub><mml:mi>v</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>0.02</mml:mn></mml:math></inline-formula> and <inline-formula id="ieqn-194"><mml:math id="mml-ieqn-194"><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>0.1</mml:mn></mml:math></inline-formula>.</p>
<p>In our initial setup, we placed 1.95 million particles in a uniform, close-packed lattice so that the particles have the above properties. Again, we use the full 3D code to simulate a slice with 20 layers of particles in the <inline-formula id="ieqn-195"><mml:math id="mml-ieqn-195"><mml:mi>z</mml:mi></mml:math></inline-formula>-direction, we do not allow for motion in the <inline-formula id="ieqn-196"><mml:math id="mml-ieqn-196"><mml:mi>z</mml:mi></mml:math></inline-formula>-direction, and we enforce the above velocities within <inline-formula id="ieqn-197"><mml:math id="mml-ieqn-197"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mrow><mml:mtext>BD1</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-198"><mml:math id="mml-ieqn-198"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mrow><mml:mtext>BD1</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mn>0.05</mml:mn></mml:math></inline-formula> and <inline-formula id="ieqn-199"><mml:math id="mml-ieqn-199"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mrow><mml:mtext>BD2</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mn>0.05</mml:mn></mml:math></inline-formula> and <inline-formula id="ieqn-200"><mml:math id="mml-ieqn-200"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mrow><mml:mtext>BD2</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> as boundary conditions.</p>
<p>We show in <xref ref-type="fig" rid="fig-18">Fig. 18</xref> the density at <inline-formula id="ieqn-201"><mml:math id="mml-ieqn-201"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>2.2</mml:mn></mml:math></inline-formula>, again for our three limiters. There are small artefacts at the inner and outer boundaries because of our simple treatment of the boundary conditions, but in all cases, we see healthy growing Kelvin-Helmholtz instabilities with nicely winding billows. For the most diffusive limiter (<monospace>minmod</monospace>), we see essentially only the triggered modes growing. In contrast, in the other two cases, &#x201C;parasitic&#x201D; modes have also developed, which have been triggered by the granularity of our closely-packed particles shearing against each other.</p>
<fig id="fig-18">
<label>Figure 18</label>
<caption>
<title>Density in cylindrical Kelvin-Helmholtz test for the different slope limiters</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-18.tif"/>
</fig>
</sec>
<sec id="s3_6">
<label>3.6</label>
<title>Rayleigh-Taylor Instability</title>
<p>The Rayleigh-Taylor instability is a standard probe of the subsonic growth of a small perturbation. In its simplest form, a density layer <inline-formula id="ieqn-202"><mml:math id="mml-ieqn-202"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:math></inline-formula> rests on top of a layer with density <inline-formula id="ieqn-203"><mml:math id="mml-ieqn-203"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>&#x003C;</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:math></inline-formula> in a constant acceleration field, e.g., due to gravity. While the denser fluid sinks down, it develops a characteristic &#x201C;mushroom-like&#x201D; pattern. Simulations with traditional SPH implementations have shown only retarded growth or even complete suppression of instability [<xref ref-type="bibr" rid="ref-67">67</xref>,<xref ref-type="bibr" rid="ref-68">68</xref>].</p>
<p>We again adopt a quasi-2D setup and use the full 3D code for the evolution. We place the particles on a cubic lattice in the <inline-formula id="ieqn-204"><mml:math id="mml-ieqn-204"><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:math></inline-formula>-domain <inline-formula id="ieqn-205"><mml:math id="mml-ieqn-205"><mml:mo stretchy="false">[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>0.25</mml:mn><mml:mo>,</mml:mo><mml:mn>0.25</mml:mn><mml:mo stretchy="false">]</mml:mo><mml:mo>&#x00D7;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> and use 20 layers of particles in the <inline-formula id="ieqn-206"><mml:math id="mml-ieqn-206"><mml:mi>z</mml:mi></mml:math></inline-formula>-direction, and also place 20 layers of particles as boundaries around this core region. The properties of particles below <inline-formula id="ieqn-207"><mml:math id="mml-ieqn-207"><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> are &#x201C;frozen&#x201D; at the values of the initial conditions, for particles with <inline-formula id="ieqn-208"><mml:math id="mml-ieqn-208"><mml:msub><mml:mi>y</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>, we multiply a damping factor
<disp-formula id="eqn-65"><label>(65)</label><mml:math id="mml-eqn-65" display="block"><mml:mi>&#x03BE;</mml:mi><mml:mo>=</mml:mo><mml:mi>exp</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mn>0.05</mml:mn></mml:mfrac><mml:mo>)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mo>}</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:math></disp-formula>to the temporal derivatives so that any evolution in this upper region is strongly suppressed. We apply periodic boundaries in <inline-formula id="ieqn-209"><mml:math id="mml-ieqn-209"><mml:mi>x</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mspace width="negativethinmathspace" /></mml:math></inline-formula> direction at <inline-formula id="ieqn-210"><mml:math id="mml-ieqn-210"><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mo>&#x00B1;</mml:mo><mml:mn>0.25</mml:mn></mml:math></inline-formula>. Similar to [<xref ref-type="bibr" rid="ref-20">20</xref>] we use <inline-formula id="ieqn-211"><mml:math id="mml-ieqn-211"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-212"><mml:math id="mml-ieqn-212"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>, a constant acceleration <inline-formula id="ieqn-213"><mml:math id="mml-ieqn-213"><mml:mrow><mml:mover><mml:mi>g</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>0.5</mml:mn><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>y</mml:mi></mml:msub></mml:math></inline-formula> and
<disp-formula id="eqn-66"><label>(66)</label><mml:math id="mml-eqn-66" display="block"><mml:mi>&#x03C1;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>exp</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0394;</mml:mi><mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:math></disp-formula>with transition width <inline-formula id="ieqn-214"><mml:math id="mml-ieqn-214"><mml:mi mathvariant="normal">&#x0394;</mml:mi><mml:mo>=</mml:mo><mml:mn>0.025</mml:mn></mml:math></inline-formula> and transition coordinate <inline-formula id="ieqn-215"><mml:math id="mml-ieqn-215"><mml:msub><mml:mi>y</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0.5</mml:mn></mml:math></inline-formula>. We apply a small velocity perturbation to the interface
<disp-formula id="eqn-67"><label>(67)</label><mml:math id="mml-eqn-67" display="block"><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>&#x03B4;</mml:mi><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">[</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>cos</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mn>8</mml:mn><mml:mi>&#x03C0;</mml:mi><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">]</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>cos</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mn>5</mml:mn><mml:mi>&#x03C0;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">]</mml:mo><mml:mo>,</mml:mo></mml:math></disp-formula>for <inline-formula id="ieqn-216"><mml:math id="mml-ieqn-216"><mml:mi>y</mml:mi></mml:math></inline-formula> in <inline-formula id="ieqn-217"><mml:math id="mml-ieqn-217"><mml:mo stretchy="false">[</mml:mo><mml:mn>0.3</mml:mn><mml:mo>,</mml:mo><mml:mn>0.7</mml:mn><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> with an initial amplitude <inline-formula id="ieqn-218"><mml:math id="mml-ieqn-218"><mml:mi>&#x03B4;</mml:mi><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0.025</mml:mn></mml:math></inline-formula>, and we use a polytropic equation of state with exponent <inline-formula id="ieqn-219"><mml:math id="mml-ieqn-219"><mml:mi mathvariant="normal">&#x0393;</mml:mi><mml:mo>=</mml:mo><mml:mn>1.4</mml:mn></mml:math></inline-formula>. The equilibrium pressure profile is given by
<disp-formula id="eqn-68"><label>(68)</label><mml:math id="mml-eqn-68" display="block"><mml:mi>P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>g</mml:mi><mml:mi>&#x03C1;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">]</mml:mo><mml:mo>,</mml:mo></mml:math></disp-formula>with <inline-formula id="ieqn-220"><mml:math id="mml-ieqn-220"><mml:msub><mml:mi>P</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x0393;</mml:mi></mml:math></inline-formula>, so that the sound speed is near unity in the transition region.</p>
<p>We show in <xref ref-type="fig" rid="fig-19">Fig. 19</xref> the results for different resolutions at <inline-formula id="ieqn-221"><mml:math id="mml-ieqn-221"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>4</mml:mn></mml:math></inline-formula> for the <monospace>vanAlbada limiter</monospace>. At all resolutions, the instability grows and reaches similar <inline-formula id="ieqn-222"><mml:math id="mml-ieqn-222"><mml:mi>y</mml:mi></mml:math></inline-formula> values, but, of course, with finer detailed structures for higher resolution. In <xref ref-type="fig" rid="fig-20">Fig. 20</xref>, we show the medium resolution case for the different limiters, again confirming the hierarchy of dissipation levels with <monospace>minmod</monospace> being the most and <monospace>vanLeerMC</monospace> being the least dissipative limiter.</p>
<fig id="fig-19">
<label>Figure 19</label>
<caption>
<title>Rayleigh-Taylor instability test (at t &#x003D; 4) with <monospace>vanAlbada limiter</monospace> at different resolution: <inline-formula id="ieqn-223"><mml:math id="mml-ieqn-223"><mml:msup><mml:mn>128</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> (left), <inline-formula id="ieqn-224"><mml:math id="mml-ieqn-224"><mml:msup><mml:mn>256</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> (middle) and <inline-formula id="ieqn-225"><mml:math id="mml-ieqn-225"><mml:msup><mml:mn>512</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> (right)</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-19.tif"/>
</fig><fig id="fig-20">
<label>Figure 20</label>
<caption>
<title>Rayleigh-Taylor instability test (at t &#x003D; 4.3) with <inline-formula id="ieqn-226"><mml:math id="mml-ieqn-226"><mml:msup><mml:mn>256</mml:mn><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula> particles and different slope limiters</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-20.tif"/>
</fig>
</sec>
<sec id="s3_7">
<label>3.7</label>
<title>Complex Shocks with Vorticity Creation</title>
<p>Schulz-Rinne [<xref ref-type="bibr" rid="ref-43">43</xref>] suggested a set of very challenging 2D benchmark tests. The tests are constructed so that four constant states meet at one corner, and the initial values are chosen so that an elementary wave, either a shock, a rarefaction, or a contact discontinuity, appears at each interface. During subsequent evolution, complex wave patterns emerge for which exact solutions are not known. These tests are considered very challenging benchmarks for multidimensional hydrodynamic codes [<xref ref-type="bibr" rid="ref-43">43</xref>,<xref ref-type="bibr" rid="ref-69">69</xref>&#x2013;<xref ref-type="bibr" rid="ref-71">71</xref>]. Such tests have rarely been shown for SPH. We are only aware of the work by [<xref ref-type="bibr" rid="ref-26">26</xref>], who show results for one such shock test in a study of Godunov SPH with approximate Riemann solvers and as benchmarks for the <monospace>MAGMA2</monospace> code [<xref ref-type="bibr" rid="ref-21">21</xref>].</p>
<p>Here, we investigate three such configurations. We simulate, as before, a 3D slice thick enough so that the midplane is unaffected by edge effects (we use 20 particle layers in <inline-formula id="ieqn-227"><mml:math id="mml-ieqn-227"><mml:mi>z</mml:mi></mml:math></inline-formula>-direction). We place particles on a cubic lattice so that 300 &#x000D7; 300 particles are within <inline-formula id="ieqn-228"><mml:math id="mml-ieqn-228"><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mn>0.3</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mn>0.3</mml:mn><mml:mo stretchy="false">]</mml:mo><mml:mo>&#x00D7;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mn>0.3</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mn>0.3</mml:mn><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula>, where <inline-formula id="ieqn-229"><mml:math id="mml-ieqn-229"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> is the contact point of the quadrants, and we use a polytropic exponent <inline-formula id="ieqn-230"><mml:math id="mml-ieqn-230"><mml:mi mathvariant="normal">&#x0393;</mml:mi><mml:mo>=</mml:mo><mml:mn>1.4</mml:mn></mml:math></inline-formula> in all tests. We refer to these Schulz-Rinne type problems as SR1-SR3 and give their initial parameters for each quadrant in <xref ref-type="table" rid="table-2">Table 2</xref>. These test problems correspond to configurations 3, 11, and 12 in the labeling convention of [<xref ref-type="bibr" rid="ref-70">70</xref>]. We smooth the initial conditions through <inline-formula id="ieqn-231"><mml:math id="mml-ieqn-231"><mml:mo fence="false" stretchy="false">&#x27E8;</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mo fence="false" stretchy="false">&#x27E9;</mml:mo><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:mrow><mml:mo>[</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>]</mml:mo></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>b</mml:mi></mml:munder><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> so that they have a smoothness that is consistent with the evolution code.</p>
<table-wrap id="table-2">
<label>Table 2</label>
<caption>
<title>Initial data for the Schulz-Rinne-type 2D Riemann problems with vorticity creation</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col align="center" width="50mm"/>
<col/>
<col/>
</colgroup>
<tbody>
<tr>
<td></td>
<td></td>
<td><bold>SR1; contact point:</bold> <inline-formula id="ieqn-232"><mml:math id="mml-ieqn-232"><mml:mo stretchy="false">(</mml:mo><mml:mn>0.3</mml:mn><mml:mo>,</mml:mo><mml:mn>0.3</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td></td>
<td></td>
</tr>
<tr>
<td><bold>Variable</bold></td>
<td><bold>NW</bold></td>
<td><bold>NE</bold></td>
<td><bold>SW</bold></td>
<td><bold>SE</bold></td>
</tr>
<tr>
<td><inline-formula id="ieqn-233"><mml:math id="mml-ieqn-233"><mml:mi>&#x03C1;</mml:mi></mml:math></inline-formula></td>
<td>0.5323</td>
<td>1.5000</td>
<td>0.1380</td>
<td>0.5323</td>
</tr>
<tr>
<td><inline-formula id="ieqn-234"><mml:math id="mml-ieqn-234"><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:math></inline-formula></td>
<td>1.2060</td>
<td>0.0000</td>
<td>1.2060</td>
<td>0.0000</td>
</tr>
<tr>
<td><inline-formula id="ieqn-235"><mml:math id="mml-ieqn-235"><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:math></inline-formula></td>
<td>0.0000</td>
<td>0.0000</td>
<td>1.2060</td>
<td>1.2060</td>
</tr>
<tr>
<td><italic>P</italic></td>
<td>0.3000</td>
<td>1.5000</td>
<td>0.0290</td>
<td>0.3000</td>
</tr>
<tr>
<td></td>
<td></td>
<td>SR2; contact point: <inline-formula id="ieqn-236"><mml:math id="mml-ieqn-236"><mml:mo stretchy="false">(</mml:mo><mml:mn>0.0</mml:mn><mml:mo>,</mml:mo><mml:mn>0.0</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Variable</td>
<td>NW</td>
<td>NE</td>
<td>SW</td>
<td>SE</td>
</tr>
<tr>
<td><inline-formula id="ieqn-237"><mml:math id="mml-ieqn-237"><mml:mi>&#x03C1;</mml:mi></mml:math></inline-formula></td>
<td>0.5313</td>
<td>1.0000</td>
<td>0.8000</td>
<td>0.5313</td>
</tr>
<tr>
<td><inline-formula id="ieqn-238"><mml:math id="mml-ieqn-238"><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:math></inline-formula></td>
<td>0.8276</td>
<td>0.1000</td>
<td>0.1000</td>
<td>0.1000</td>
</tr>
<tr>
<td><inline-formula id="ieqn-239"><mml:math id="mml-ieqn-239"><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:math></inline-formula></td>
<td>0.0000</td>
<td>0.0000</td>
<td>0.0000</td>
<td>0.7276</td>
</tr>
<tr>
<td><italic>P</italic></td>
<td>0.4000</td>
<td>1.0000</td>
<td>0.4000</td>
<td>0.4000</td>
</tr>
<tr>
<td></td>
<td></td>
<td>SR3; contact point: <inline-formula id="ieqn-240"><mml:math id="mml-ieqn-240"><mml:mo stretchy="false">(</mml:mo><mml:mn>0.0</mml:mn><mml:mo>,</mml:mo><mml:mn>0.0</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Variable</td>
<td>NW</td>
<td>NE</td>
<td>SW</td>
<td>SE</td>
</tr>
<tr>
<td><inline-formula id="ieqn-241"><mml:math id="mml-ieqn-241"><mml:mi>&#x03C1;</mml:mi></mml:math></inline-formula></td>
<td>1.0000</td>
<td>0.5313</td>
<td>0.8000</td>
<td>1.000</td>
</tr>
<tr>
<td><inline-formula id="ieqn-242"><mml:math id="mml-ieqn-242"><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:math></inline-formula></td>
<td>0.7276</td>
<td>0.0000</td>
<td>0.0000</td>
<td>0.0000</td>
</tr>
<tr>
<td><inline-formula id="ieqn-243"><mml:math id="mml-ieqn-243"><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:math></inline-formula></td>
<td>0.0000</td>
<td>0.0000</td>
<td>0.0000</td>
<td>0.7262</td>
</tr>
<tr>
<td><italic>P</italic></td>
<td>1.0000</td>
<td>0.4000</td>
<td>1.0000</td>
<td>1.0000</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>For all three tests, we find very good agreement with the results published in the literature [<xref ref-type="bibr" rid="ref-43">43</xref>,<xref ref-type="bibr" rid="ref-69">69</xref>&#x2013;<xref ref-type="bibr" rid="ref-71">71</xref>,<xref ref-type="bibr" rid="ref-21">21</xref>]. Comparing the performance of the different limiters for test SR1 (first row in <xref ref-type="fig" rid="fig-21">Fig. 21</xref>), we see only minor differences. All cases nicely produce the shock surfaces and all show the &#x201C;mushroom-like&#x201D; structure near (0.2, 0.2) with only small differences. The structure around (0.3, 0.3), however, does show some differences: it looks &#x201C;mushroom-like&#x201D; for the least dissipative case (<monospace>vanLeerMC</monospace>), but not very much so for the more dissipative limiters. Also, test SR2 agrees overall well with the results in the literature, but here the &#x201C;mushroom-like&#x201D; structures are different: the curls show more windings for lower dissipation, that is, the smallest number for <monospace>minmod</monospace> and the highest for <monospace>vanLeerMC</monospace>. The SR3 test also agrees well with the results in the literature, here the results for the different limiters are virtually identical.</p>
<fig id="fig-21">
<label>Figure 21</label>
<caption>
<title>Schulz-Rinne test 1 (first row), test 2 (second row), and test 3 (third row), color-coded is the density. The first column each time refers to <monospace>minmod</monospace>, the second to <monospace>vanAlbada</monospace> and the third one to <monospace>vanLeerMC</monospace></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_62063-fig-21.tif"/>
</fig>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Conclusion</title>
<p>Here, we have presented and explored a new formulation of particle hydrodynamics. We started from a common SPH formulation and enhanced it with Roe&#x2019;s approximate Riemann solver to solve Riemann problems between interacting particle pairs. More specifically, we replaced the mean values of the pressures and (projected) velocities with the contact discontinuity values <inline-formula id="ieqn-244"><mml:math id="mml-ieqn-244"><mml:msup><mml:mi>P</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-245"><mml:math id="mml-ieqn-245"><mml:msup><mml:mi>v</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup></mml:math></inline-formula>. We identified the terms in the Roe solver that are responsible for the dissipation. In these terms, we replaced the particle properties with the values found by slope-limited reconstruction from both sides to the interparticle midpoint. We use kernels that are designed to enforce consistency relations and which, by construction, recover constant and linear functions to machine precision, called &#x201C;reproducing kernels&#x201D;. We have carefully scrutinized our corresponding implementation based on a &#x201C;glass-like&#x201D; particle distribution, and we compare the function and gradient reproduction to the standard SPH approximation. We find that the errors in this test are at least nine orders of magnitude lower for the RPK than for the standard SPH approach. These reproducing kernels are used both for the hydrodynamic gradients and in the reconstruction process.</p> 
<p>We have put our new formulation to the test in many challenging benchmarks, ranging from shocks over instabilities to vorticity-creating shock tests designed by Schulz-Rinne. We find very good results in all tests and, where comparable, we find slightly better but overall very similar results to the <monospace>MAGMA2</monospace> code. We have also explored three different slope limiters in the reconstruction: <monospace>minmod, vanAlbada</monospace>, and <monospace>vanLeerMC</monospace>. Although <monospace>minmod</monospace> is an overall robust choice, it leads to more dissipation than appears necessary. The <monospace>vanLeerMC limiter</monospace>, in contrast, produces the least dissipation of the three limiters, but maybe not enough in the Sedov blast wave test, where it leads to substantially more post-shock noise than the other limiters, and an overshoot of the density. Of the three explored limiters, our clear favorite is the <monospace>vanAlbada</monospace> limiter, which performs well in all tests, but it may be worth exploring further limiters in the future. Although the results presented are very encouraging, more work needs to be done. This may include further studies of robustness and accuracy, a careful comparison with modern SPH formulations, and the inclusion of additional physics. However, these explorations are left for future work.</p>
</sec>
</body>
<back>
<ack>
<p>The simulations for this paper have been performed on the facilities of North-German Supercomputing Alliance (HLRN), and at the SUNRISE HPC facility supported by the Technical Division at the Department of Physics, Stockholm University, and on the HUMMEL2 cluster funded by the Deutsche Forschungsgemeinschaft (498394658). Special thanks go to Mikica Kocic (SU), Thomas Orgis and Hinnerk St&#x00FC;ben (both UHH) for their excellent support. Some plots have been produced with the software <monospace>splash</monospace> [<xref ref-type="bibr" rid="ref-72">72</xref>].</p>
</ack>
<sec>
<title>Funding Statement</title>
<p>The author has been supported by the Swedish Research Council (VR) under grant number 2020-05044, by the research environment grant &#x201C;Gravitational Radiation and Electromagnetic Astrophysical Transients&#x201D; (GREAT) funded by the Swedish Research Council (VR) under Dnr 2016-06012, by the Knut and Alice Wallenberg Foundation under grant Dnr. KAW 2019.0112, by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany&#x2019;s Excellence Strategy-EXC 2121 &#x201C;Quantum Universe&#x201D;-390833306 and by the European Research Council (ERC) Advanced Grant INSPIRATION under the European Union&#x2019;s Horizon 2020 Research and Innovation Programme (Grant agreement No. 101053985).</p>
</sec>
<sec sec-type="data-availability">
<title>Availability of Data and Materials</title>
<p>The data underlying this article will be shared on reasonable request to the corresponding author.</p>
</sec>
<sec>
<title>Ethics Approval</title>
<p>Not applicable.</p>
</sec>
<sec sec-type="COI-statement">
<title>Conflicts of Interest</title>
<p>The author declares no conflicts of interest to report regarding the present study.</p>
</sec>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lucy</surname> <given-names>LB</given-names></string-name></person-group>. <article-title>A numerical approach to the testing of the fission hypothesis</article-title>. <source>Astron J</source>. <year>1977</year>;<volume>82</volume>:<fpage>1013</fpage>. doi:<pub-id pub-id-type="doi">10.1086/112164</pub-id>.</mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gingold</surname> <given-names>RA</given-names></string-name>, <string-name><surname>Monaghan</surname> <given-names>JJ</given-names></string-name></person-group>. <article-title>Smoothed particle hydrodynamics: theory and application to non-spherical stars</article-title>. <source>Mon Not R Astron Soc</source>. <year>1977</year>;<volume>181</volume>(<issue>3</issue>):<fpage>375</fpage>&#x2013;<lpage>89</lpage>. doi:<pub-id pub-id-type="doi">10.1093/mnras/181.3.375</pub-id>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Xu</surname> <given-names>X</given-names></string-name>, <string-name><surname>Jiang</surname> <given-names>Y-L</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>P</given-names></string-name></person-group>. <article-title>SPH simulations of 3D dam-break flow against various forms of the obstacle</article-title>. <source>Ocean Eng</source>. <year>2021</year>;<volume>229</volume>(<issue>2</issue>):<fpage>108978</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.oceaneng.2021.108978</pub-id>.</mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rahimi</surname> <given-names>MN</given-names></string-name>, <string-name><surname>Moutsanidis</surname> <given-names>G</given-names></string-name></person-group>. <article-title>A smoothed particle hydrodynamics approach for phase field modeling of brittle fracture</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2022</year>;<volume>398</volume>(<issue>3</issue>):<fpage>115191</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2022.115191</pub-id>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Monaghan</surname> <given-names>JJ</given-names></string-name></person-group>. <article-title>Smoothed particle hydrodynamics and its diverse applications</article-title>. <source>Annu Rev Fluid Mech</source>. <year>2012</year>;<volume>44</volume>(<issue>1</issue>):<fpage>323</fpage>&#x2013;<lpage>46</lpage>. doi:<pub-id pub-id-type="doi">10.1146/annurev-fluid-120710-101220</pub-id>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <chapter-title>Modelling astrophysical fluids with particles</chapter-title>. In: <person-group person-group-type="editor"><string-name><surname>Bisikalo</surname> <given-names>D</given-names></string-name>, <string-name><surname>Wiebe</surname> <given-names>D</given-names></string-name>, <string-name><surname>Boily</surname> <given-names>C</given-names></string-name></person-group>, editors. <source>The predictive power of computational astrophysics as a discover tool</source>. <publisher-loc>Cambridge, UK</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>; <year>2023</year>. p. <fpage>382</fpage>&#x2013;<lpage>97</lpage>. doi:<pub-id pub-id-type="doi">10.1017/s1743921322001600</pub-id>.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Monaghan</surname> <given-names>JJ</given-names></string-name></person-group>. <article-title>Smoothed particle hydrodynamics</article-title>. <source>Rep Prog Phys</source>. <year>2005</year>;<volume>68</volume>:<fpage>1703</fpage>&#x2013;<lpage>59</lpage>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <article-title>Astrophysical smooth particle hydrodynamics</article-title>. <source>New Astron Revi</source>. <year>2009</year>;<volume>53</volume>(<issue>4-6</issue>):<fpage>78</fpage>&#x2013;<lpage>104</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.newar.2009.08.007</pub-id>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Springel</surname> <given-names>V</given-names></string-name></person-group>. <article-title>Smoothed particle hydrodynamics in astrophysics</article-title>. <source>ARAA</source>. <year>2010</year>;<volume>48</volume>:<fpage>391</fpage>&#x2013;<lpage>430</lpage>.</mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Price</surname> <given-names>DJ</given-names></string-name></person-group>. <article-title>Smoothed particle hydrodynamics and magnetohydrodynamics</article-title>. <source>J Comput Phys</source>. <year>2012</year>;<volume>231</volume>(<issue>3</issue>):<fpage>759</fpage>&#x2013;<lpage>94</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jcp.2010.12.011</pub-id>.</mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <article-title>SPH methods in the modelling of compact objects</article-title>. <source>Living Rev Computat Astrophy</source>. <year>2015</year>;<volume>1</volume>(<issue>1</issue>):<fpage>1</fpage>. doi:<pub-id pub-id-type="doi">10.1007/lrca-2015-1</pub-id>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name>, <string-name><surname>Diener</surname> <given-names>P</given-names></string-name></person-group>. <article-title>SPHINCS_BSSN: a general relativistic smooth particle hydrodynamics code for dynamical spacetimes</article-title>. <source>Class Quantum Gravity</source>. <year>2021</year>;<volume>38</volume>(<issue>11</issue>):<fpage>115002</fpage>. doi:<pub-id pub-id-type="doi">10.1088/1361-6382/abee65</pub-id>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name>, <string-name><surname>Torsello</surname> <given-names>F</given-names></string-name>, <string-name><surname>Diener</surname> <given-names>P</given-names></string-name></person-group>. <article-title>The Lagrangian Numerical Relativity code SPHINCS_BSSN_v1.0</article-title>. <source>Front Appl Math Stat</source>. <year>2023</year>;<volume>9</volume>:<fpage>161101</fpage>. doi:<pub-id pub-id-type="doi">10.3389/fams.2023.1236586</pub-id>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name>, <string-name><surname>Diener</surname> <given-names>P</given-names></string-name></person-group>. <chapter-title>Sphincs_bssn: numerical relativity with particles</chapter-title>. In: <person-group person-group-type="editor"><string-name><surname>Bambi</surname> <given-names>C</given-names></string-name>, <string-name><surname>Mizuno</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Shashank</surname> <given-names>S</given-names></string-name>, <string-name><surname>Yuan</surname> <given-names>F</given-names></string-name></person-group>, editors. <source>New frontiers in GRMHD simulations</source>. <publisher-loc>Singapore</publisher-loc>: <publisher-name>Springer</publisher-name>; <year>2025</year>. doi:<pub-id pub-id-type="doi">10.1007/978-981-97-8522-3</pub-id>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Morris</surname> <given-names>JP</given-names></string-name>, <string-name><surname>Monaghan</surname> <given-names>JJ</given-names></string-name></person-group>. <article-title>A switch to reduce sph viscosity</article-title>. <source>J Comp Phys</source>. <year>1997</year>;<volume>136</volume>:<fpage>41</fpage>. doi:<pub-id pub-id-type="doi">10.1006/jcph.1997.5690</pub-id>.</mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name>, <string-name><surname>Davies</surname> <given-names>MB</given-names></string-name>, <string-name><surname>Thielemann</surname> <given-names>F-K</given-names></string-name>, <string-name><surname>Piran</surname> <given-names>T</given-names></string-name></person-group>. <article-title>Merging neutron stars: asymmetric systems</article-title>. <source>A&#x0026;A</source>. <year>2000</year>;<volume>360</volume>:<fpage>171</fpage>&#x2013;<lpage>84</lpage>. doi:<pub-id pub-id-type="doi">10.48550/arXiv.astro-ph/0005550</pub-id>.</mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Cullen</surname> <given-names>L</given-names></string-name>, <string-name><surname>Dehnen</surname> <given-names>W</given-names></string-name></person-group>. <article-title>Inviscid smoothed particle hydrodynamics</article-title>. <source>MNRAS</source>. <year>2010</year>;<volume>408</volume>(<issue>2</issue>):<fpage>669</fpage>&#x2013;<lpage>83</lpage>. doi:<pub-id pub-id-type="doi">10.1111/j.1365-2966.2010.17158.x</pub-id>.</mixed-citation></ref>
<ref id="ref-18"><label>[18]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <article-title>Boosting the accuracy of SPH techniques: newtonian and special-relativistic tests</article-title>. <source>MNRAS</source>. <year>2015</year>;<volume>448</volume>(<issue>4</issue>):<fpage>3628</fpage>&#x2013;<lpage>64</lpage>. doi:<pub-id pub-id-type="doi">10.1093/mnras/stv225</pub-id>.</mixed-citation></ref>
<ref id="ref-19"><label>[19]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <article-title>A simple, entropy-based dissipation trigger for SPH</article-title>. <source>ApJ</source>. <year>2020</year>;<volume>898</volume>(<issue>1</issue>):<fpage>60</fpage>. doi:<pub-id pub-id-type="doi">10.3847/1538-4357/ab9a2e</pub-id>.</mixed-citation></ref>
<ref id="ref-20"><label>[20]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Frontiere</surname> <given-names>N</given-names></string-name>, <string-name><surname>Raskin</surname> <given-names>CD</given-names></string-name>, <string-name><surname>Owen</surname> <given-names>JM</given-names></string-name></person-group>. <article-title>CRKSPH-a conservative reproducing kernel smoothed particle hydrodynamics scheme</article-title>. <source>J Comput Phys</source>. <year>2017</year>;<volume>332</volume>(<issue>3</issue>):<fpage>160</fpage>&#x2013;<lpage>209</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jcp.2016.12.004</pub-id>.</mixed-citation></ref>
<ref id="ref-21"><label>[21]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <article-title>The Lagrangian hydrodynamics code MAGMA2</article-title>. <source>MNRAS</source>. <year>2020</year>;<volume>498</volume>(<issue>3</issue>):<fpage>4230</fpage>&#x2013;<lpage>55</lpage>. doi:<pub-id pub-id-type="doi">10.1093/mnras/staa2591</pub-id>.</mixed-citation></ref>
<ref id="ref-22"><label>[22]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name><surname>Sandnes</surname> <given-names>TD</given-names></string-name>, <string-name><surname>Eke</surname> <given-names>VR</given-names></string-name>, <string-name><surname>Kegerreis</surname> <given-names>JA</given-names></string-name>, <string-name><surname>Massey</surname> <given-names>RJ</given-names></string-name>, <string-name><surname>Ruiz-Bonilla</surname> <given-names>S</given-names></string-name>, <string-name><surname>Schaller</surname> <given-names>M</given-names></string-name>, <etal>et al.</etal></person-group> <article-title>REMIX SPH&#x2013;improving mixing in smoothed particle hydrodynamics simulations using a generalised, material-independent approach</article-title>. <comment>arXiv:2407.18587. 2024</comment>.</mixed-citation></ref>
<ref id="ref-23"><label>[23]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Inutsuka</surname> <given-names>S-I</given-names></string-name></person-group>. <article-title>Reformulation of smoothed particle hydrodynamics with Riemann solver</article-title>. <source>J Comput Phys</source>. <year>2002</year>;<volume>179</volume>(<issue>1</issue>):<fpage>238</fpage>&#x2013;<lpage>67</lpage>. doi:<pub-id pub-id-type="doi">10.1006/jcph.2002.7053</pub-id>.</mixed-citation></ref>
<ref id="ref-24"><label>[24]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Parshikov</surname> <given-names>AN</given-names></string-name>, <string-name><surname>Medin</surname> <given-names>SA</given-names></string-name></person-group>. <article-title>Smoothed particle hydrodynamics using interparticle contact algorithms</article-title>. <source>J Comput Phys</source>. <year>2002</year>;<volume>180</volume>(<issue>1</issue>):<fpage>358</fpage>&#x2013;<lpage>82</lpage>. doi:<pub-id pub-id-type="doi">10.1006/jcph.2002.7099</pub-id>.</mixed-citation></ref>
<ref id="ref-25"><label>[25]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Sirotkin</surname> <given-names>FV</given-names></string-name>, <string-name><surname>Yoh</surname> <given-names>JK</given-names></string-name></person-group>. <article-title>A Smoothed Particle Hydrodynamics method with approximate Riemann solvers for simulation of strong explosions</article-title>. <source>Comput Fluids</source>. <year>2013</year>;<volume>88</volume>:<fpage>418</fpage>&#x2013;<lpage>29</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.compfluid.2013.09.029</pub-id>.</mixed-citation></ref>
<ref id="ref-26"><label>[26]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Puri</surname> <given-names>K</given-names></string-name>, <string-name><surname>Ramachandran</surname> <given-names>P</given-names></string-name></person-group>. <article-title>Approximate Riemann solvers for the Godunov SPH (GSPH)</article-title>. <source>J Comput Phys</source>. <year>2014</year>;<volume>270</volume>(<issue>2</issue>):<fpage>432</fpage>&#x2013;<lpage>58</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jcp.2014.03.055</pub-id>.</mixed-citation></ref>
<ref id="ref-27"><label>[27]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Meng</surname> <given-names>ZF</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>AM</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>PP</given-names></string-name>, <string-name><surname>Ming</surname> <given-names>FR</given-names></string-name></person-group>. <article-title>A shock-capturing scheme with a novel limiter for compressible flows solved by smoothed particle hydrodynamics</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2021</year>;<volume>386</volume>(<issue>420</issue>):<fpage>114082</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2021.114082</pub-id>.</mixed-citation></ref>
<ref id="ref-28"><label>[28]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wendland</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Piecewise polynomial, positive definite and compactly supported radial functions of minimal degree</article-title>. <source>Adv Comput Math</source>. <year>1995</year>;<volume>4</volume>(<issue>1</issue>):<fpage>389</fpage>&#x2013;<lpage>96</lpage>. doi:<pub-id pub-id-type="doi">10.1007/bf02123482</pub-id>.</mixed-citation></ref>
<ref id="ref-29"><label>[29]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Cabezon</surname> <given-names>RM</given-names></string-name>, <string-name><surname>Garcia-Senz</surname> <given-names>D</given-names></string-name>, <string-name><surname>Relano</surname> <given-names>A</given-names></string-name></person-group>. <article-title>A one-parameter family of interpolating kernels for smoothed particle hydrodynamics studies</article-title>. <source>J Comput Phys</source>. <year>2008</year>;<volume>227</volume>(<issue>19</issue>):<fpage>8523</fpage>&#x2013;<lpage>40</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jcp.2008.06.014</pub-id>.</mixed-citation></ref>
<ref id="ref-30"><label>[30]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Dehnen</surname> <given-names>W</given-names></string-name>, <string-name><surname>Aly</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Improving convergence in smoothed particle hydrodynamics simulations without pairing instability</article-title>. <source>MNRAS</source>. <year>2012</year>;<volume>425</volume>(<issue>2</issue>):<fpage>1068</fpage>&#x2013;<lpage>82</lpage>. doi:<pub-id pub-id-type="doi">10.1111/j.1365-2966.2012.21439.x</pub-id>.</mixed-citation></ref>
<ref id="ref-31"><label>[31]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Garcia-Senz</surname> <given-names>D</given-names></string-name>, <string-name><surname>Cabezon</surname> <given-names>R</given-names></string-name>, <string-name><surname>Escartin</surname> <given-names>JA</given-names></string-name></person-group>. <article-title>Improving smoothed particle hydrodynamics with an integral approach to calculating gradients</article-title>. <source>A &#x0026; A</source>. <year>2012</year>;<volume>538</volume>:<fpage>A9</fpage>. doi:<pub-id pub-id-type="doi">10.1051/0004-6361/201117939</pub-id>.</mixed-citation></ref>
<ref id="ref-32"><label>[32]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Cabezon</surname> <given-names>RM</given-names></string-name>, <string-name><surname>Garcia-Senz</surname> <given-names>D</given-names></string-name>, <string-name><surname>Escartin</surname> <given-names>JA</given-names></string-name></person-group>. <article-title>Testing the concept of integral approach to derivatives within the smoothed particle hydrodynamics technique in astrophysical scenarios</article-title>. <source>A &#x0026; A</source>. <year>2012</year>;<volume>545</volume>:<fpage>A112</fpage>. doi:<pub-id pub-id-type="doi">10.1051/0004-6361/201219821</pub-id>.</mixed-citation></ref>
<ref id="ref-33"><label>[33]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Antona</surname> <given-names>R</given-names></string-name>, <string-name><surname>Vacondio</surname> <given-names>R</given-names></string-name>, <string-name><surname>Avesani</surname> <given-names>D</given-names></string-name>, <string-name><surname>Righetti</surname> <given-names>M</given-names></string-name>, <string-name><surname>Renzi</surname> <given-names>M</given-names></string-name></person-group>. <article-title>Towards a high order convergent ale_sph scheme with efficient weno spatial reconstruction</article-title>. <source>Water</source>. <year>2021</year>;<volume>13</volume>(<issue>17</issue>):<fpage>2432</fpage>. doi:<pub-id pub-id-type="doi">10.3390/w13172432</pub-id>.</mixed-citation></ref>
<ref id="ref-34"><label>[34]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Avesani</surname> <given-names>D</given-names></string-name>, <string-name><surname>Dumbser</surname> <given-names>M</given-names></string-name>, <string-name><surname>Vacondio</surname> <given-names>R</given-names></string-name>, <string-name><surname>Righetti</surname> <given-names>M</given-names></string-name></person-group>. <article-title>An alternative SPH formulation: ADER-WENO-SPH</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2021</year>;<volume>382</volume>(<issue>3</issue>):<fpage>113871</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2021.113871</pub-id>.</mixed-citation></ref>
<ref id="ref-35"><label>[35]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Vergnaud</surname> <given-names>A</given-names></string-name>, <string-name><surname>Oger</surname> <given-names>G</given-names></string-name>, <string-name><surname>Le Touz&#x00E9;</surname> <given-names>D</given-names></string-name></person-group>. <article-title>Investigations on a high order SPH scheme using WENO reconstruction</article-title>. <source>J Comput Phys</source>. <year>2023</year>;<volume>477</volume>(<issue>17</issue>):<fpage>111889</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jcp.2022.111889</pub-id>.</mixed-citation></ref>
<ref id="ref-36"><label>[36]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Antona</surname> <given-names>R</given-names></string-name>, <string-name><surname>Vacondio</surname> <given-names>R</given-names></string-name>, <string-name><surname>Avesani</surname> <given-names>D</given-names></string-name>, <string-name><surname>Righetti</surname> <given-names>M</given-names></string-name>, <string-name><surname>Renzi</surname> <given-names>M</given-names></string-name></person-group>. <article-title>A WENO SPH scheme with improved transport velocity and consistent divergence operator</article-title>. <source>Comput Part Mech</source>. <year>2024</year>;<volume>11</volume>(<issue>3</issue>):<fpage>1221</fpage>&#x2013;<lpage>40</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s40571-023-00681-z</pub-id>.</mixed-citation></ref>
<ref id="ref-37"><label>[37]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Moussa</surname> <given-names>BB</given-names></string-name>, <string-name><surname>Lanson</surname> <given-names>N</given-names></string-name>, <string-name><surname>Vila</surname> <given-names>JP</given-names></string-name></person-group>. <article-title>Convergence of meshless methods for conservation laws: applications to Euler equations</article-title>. <source>Int Ser Num Mathem</source>. <year>1999</year>;<volume>129</volume>(<issue>3</issue>):<fpage>31</fpage>&#x2013;<lpage>40</lpage>. doi:<pub-id pub-id-type="doi">10.1007/978-3-0348-8720-5_4</pub-id>.</mixed-citation></ref>
<ref id="ref-38"><label>[38]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Vila</surname> <given-names>JP</given-names></string-name></person-group>. <article-title>On particle weighted methods and smooth particle hydrodynamics</article-title>. <source>Mathemat Mod Meth Appl Sci</source>. <year>1999</year>;<volume>2</volume>(<issue>2</issue>):<fpage>161</fpage>&#x2013;<lpage>209</lpage>. doi:<pub-id pub-id-type="doi">10.1142/s0218202599000117</pub-id>.</mixed-citation></ref>
<ref id="ref-39"><label>[39]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hietel</surname> <given-names>D</given-names></string-name>, <string-name><surname>Steiner</surname> <given-names>K</given-names></string-name>, <string-name><surname>Struckmeier</surname> <given-names>J</given-names></string-name></person-group>. <article-title>A finite-volume particle method for compressible flows</article-title>. <source>Math Model Methods Appl Sci</source>. <year>2000</year>;<volume>10</volume>(<issue>9</issue>):<fpage>1363</fpage>&#x2013;<lpage>82</lpage>. doi:<pub-id pub-id-type="doi">10.1142/s0218202500000604</pub-id>.</mixed-citation></ref>
<ref id="ref-40"><label>[40]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Junk</surname> <given-names>M</given-names></string-name></person-group>. <chapter-title>Do finite volume methods need a mesh?</chapter-title> In: <person-group person-group-type="editor"><string-name><surname>Griebel</surname> <given-names>M</given-names></string-name>, <string-name><surname>Schweitzer</surname> <given-names>MA</given-names></string-name></person-group>, editors. <source>Meshfree methods for partial differential equations. Lecture notes in computational science and engineering</source>. <publisher-loc>Berlin/Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>; <year>2003</year>. <volume>Vol. 26</volume>. p. <fpage>223</fpage>&#x2013;<lpage>38</lpage>. doi:<pub-id pub-id-type="doi">10.1007/978-3-642-56103-0_15</pub-id>.</mixed-citation></ref>
<ref id="ref-41"><label>[41]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gaburov</surname> <given-names>E</given-names></string-name>, <string-name><surname>Nitadori</surname> <given-names>K</given-names></string-name></person-group>. <article-title>Astrophysical weighted particle magnetohydrodynamics</article-title>. <source>MNRAS</source>. <year>2011 Jun</year>;<volume>414</volume>(<issue>1</issue>):<fpage>129</fpage>&#x2013;<lpage>54</lpage>. doi:<pub-id pub-id-type="doi">10.1111/j.1365-2966.2011.18313.x</pub-id>.</mixed-citation></ref>
<ref id="ref-42"><label>[42]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Ram&#x00ED;rez</surname> <given-names>L</given-names></string-name>, <string-name><surname>Eir&#x00ED;s</surname> <given-names>A</given-names></string-name>, <string-name><surname>Couceiro</surname> <given-names>I</given-names></string-name>, <string-name><surname>Par&#x00ED;s</surname> <given-names>J</given-names></string-name>, <string-name><surname>Nogueira</surname> <given-names>X</given-names></string-name></person-group>. <article-title>An arbitrary Lagrangian-Eulerian SPH-MLS method for the computation of compressible viscous flows</article-title>. <source>J Comput Phys</source>. <year>2022</year>;<volume>464</volume>(<issue>2</issue>):<fpage>111172</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jcp.2022.111172</pub-id>.</mixed-citation></ref>
<ref id="ref-43"><label>[43]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Schulz-Rinne</surname> <given-names>CW</given-names></string-name></person-group>. <article-title>Classification of the Riemann problem for two-dimensional gas dynamics</article-title>. <source>SIAM J Mathem Analy</source>. <year>1993</year>;<volume>24</volume>(<issue>1</issue>):<fpage>76</fpage>&#x2013;<lpage>88</lpage>. doi:<pub-id pub-id-type="doi">10.1137/0524006</pub-id>.</mixed-citation></ref>
<ref id="ref-44"><label>[44]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Liu</surname> <given-names>GR</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>MB</given-names></string-name></person-group>. <source>Smoothed particle hydrodynamics: a meshfree particle method</source>. <publisher-loc>Singapore</publisher-loc>: <publisher-name>World Scientific</publisher-name>; <year>2003</year>.</mixed-citation></ref>
<ref id="ref-45"><label>[45]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name>, <string-name><surname>Diener</surname> <given-names>P</given-names></string-name>, <string-name><surname>Torsello</surname> <given-names>F</given-names></string-name></person-group>. <article-title>Thinking outside the box: numerical relativity with particles</article-title>. <source>Symmetry</source>. <year>2022</year>;<volume>14</volume>(<issue>6</issue>):<fpage>1280</fpage>. doi:<pub-id pub-id-type="doi">10.3390/sym14061280</pub-id>.</mixed-citation></ref>
<ref id="ref-46"><label>[46]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Toro</surname> <given-names>EF</given-names></string-name></person-group>. <source>Riemann solvers and Numerical methods for fluid dynamics</source>. <edition>3rd ed</edition>. <publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>; <year>2009</year>.</mixed-citation></ref>
<ref id="ref-47"><label>[47]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Roe</surname> <given-names>PL</given-names></string-name></person-group>. <article-title>Characteristic-based schemes for the Euler equations</article-title>. <source>Annu Rev Fluid Mech</source>. <year>1986</year>;<volume>18</volume>(<issue>1</issue>):<fpage>337</fpage>&#x2013;<lpage>65</lpage>. doi:<pub-id pub-id-type="doi">10.1146/annurev.fl.18.010186.002005</pub-id>.</mixed-citation></ref>
<ref id="ref-48"><label>[48]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Van Leer</surname> <given-names>B</given-names></string-name></person-group>. <article-title>Towards the ultimate conservative difference scheme. IV. A new approach to numerical convection</article-title>. <source>J Comput Phys</source>. <year>1977</year>;<volume>23</volume>(<issue>3</issue>):<fpage>276</fpage>&#x2013;<lpage>99</lpage>. doi:<pub-id pub-id-type="doi">10.1016/0021-9991(77)90095-x</pub-id>.</mixed-citation></ref>
<ref id="ref-49"><label>[49]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>van Albada</surname> <given-names>GD</given-names></string-name>, <string-name><surname>van Leer</surname> <given-names>B</given-names></string-name>, <string-name><surname>Roberts</surname> <given-names>WW Jr</given-names></string-name></person-group>. <article-title>A comparative study of computational methods in cosmic gas dynamics</article-title>. <source>A &#x0026; A</source>. <year>1982</year>;<volume>108</volume>(<issue>1</issue>):<fpage>76</fpage>&#x2013;<lpage>84</lpage>.</mixed-citation></ref>
<ref id="ref-50"><label>[50]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname> <given-names>WK</given-names></string-name>, <string-name><surname>Jun</surname> <given-names>S</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>YF</given-names></string-name></person-group>. <article-title>Reproducing kernel particle methods</article-title>. <source>Int J Numer Methods Fluids</source>. <year>1995</year>;<volume>20</volume>(<issue>8&#x2013;9</issue>):<fpage>1081</fpage>&#x2013;<lpage>106</lpage>. doi:<pub-id pub-id-type="doi">10.1002/fld.1650200824</pub-id>.</mixed-citation></ref>
<ref id="ref-51"><label>[51]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Du</surname> <given-names>Q</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>D</given-names></string-name></person-group>. <article-title>The optimal centroidal voronoi tessellations and the gersho&#x2019;s conjecture in the three-dimensional space</article-title>. <source>Comput Mathemat Applicat</source>. <year>2005</year>;<volume>49</volume>(<issue>9&#x2013;10</issue>):<fpage>1355</fpage>&#x2013;<lpage>73</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.camwa.2004.12.008</pub-id>.</mixed-citation></ref>
<ref id="ref-52"><label>[52]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gafton</surname> <given-names>E</given-names></string-name>, <string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <article-title>A fast recursive coordinate bisection tree for neighbour search and gravity</article-title>. <source>MNRAS</source>. <year>2011</year>;<volume>418</volume>:<fpage>770</fpage>&#x2013;<lpage>81</lpage>. doi:<pub-id pub-id-type="doi">10.1111/j.1365-2966.2011.19528.x</pub-id>.</mixed-citation></ref>
<ref id="ref-53"><label>[53]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gottlieb</surname> <given-names>S</given-names></string-name>, <string-name><surname>Shu</surname> <given-names>CW</given-names></string-name></person-group>. <article-title>Total variation diminishing Runge-Kutta schemes</article-title>. <source>Math Comput</source>. <year>1998</year>;<volume>67</volume>:<fpage>73</fpage>&#x2013;<lpage>85</lpage>. doi:<pub-id pub-id-type="doi">10.1090/s0025-5718-98-00913-2</pub-id>.</mixed-citation></ref>
<ref id="ref-54"><label>[54]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Owen</surname> <given-names>JM</given-names></string-name></person-group>. <article-title>A compatibly differenced total energy conserving form of SPH</article-title>. <source>Numer Meth Fluids</source>. <year>2014</year>;<volume>75</volume>:<fpage>749</fpage>&#x2013;<lpage>74</lpage>. doi:<pub-id pub-id-type="doi">10.1002/fld.3912</pub-id>.</mixed-citation></ref>
<ref id="ref-55"><label>[55]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Cercos-Pita</surname> <given-names>JL</given-names></string-name>, <string-name><surname>Merino-Alonso</surname> <given-names>PE</given-names></string-name>, <string-name><surname>Calderon-Sanchez</surname> <given-names>J</given-names></string-name>, <string-name><surname>Duque</surname> <given-names>D</given-names></string-name></person-group>. <article-title>The role of time integration in energy conservation in Smoothed Particle Hydrodynamics fluid dynamics simulations</article-title>. <source>Eur J Mech, B/Fluids</source>. <year>2023</year>;<volume>97</volume>:<fpage>78</fpage>&#x2013;<lpage>92</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.euromechflu.2022.09.001</pub-id>.</mixed-citation></ref>
<ref id="ref-56"><label>[56]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Sedov</surname> <given-names>LI</given-names></string-name></person-group>. <source>Similarity and dimensional methods in mechanics</source>. <publisher-loc>New York, NY, USA</publisher-loc>: <publisher-name>Academic Press</publisher-name>; <year>1959</year>.</mixed-citation></ref>
<ref id="ref-57"><label>[57]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Taylor</surname> <given-names>G</given-names></string-name></person-group>. <article-title>The formation of a blast wave by a very intense explosion. I. Theoretical discussion</article-title>. <source>Proc Royal Soc London Ser A</source>. <year>1950</year>;<volume>201</volume>:<fpage>159</fpage>&#x2013;<lpage>74</lpage>. doi:<pub-id pub-id-type="doi">10.1098/rspa.1950.0049</pub-id>.</mixed-citation></ref>
<ref id="ref-58"><label>[58]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Casanova</surname> <given-names>J</given-names></string-name>, <string-name><surname>Jose</surname> <given-names>J</given-names></string-name>, <string-name><surname>Garcia-Berro</surname> <given-names>E</given-names></string-name>, <string-name><surname>Shore</surname> <given-names>SN</given-names></string-name>, <string-name><surname>Calder</surname> <given-names>AC</given-names></string-name></person-group>. <article-title>Kelvin-Helmholtz instabilities as the source of inhomogeneous mixing in nova explosions</article-title>. <source>Nature</source>. <year>2011</year>;<volume>478</volume>(<issue>7370</issue>):<fpage>490</fpage>&#x2013;<lpage>2</lpage>. doi:<pub-id pub-id-type="doi">10.1038/nature10520</pub-id>; <pub-id pub-id-type="pmid">22012262</pub-id></mixed-citation></ref>
<ref id="ref-59"><label>[59]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Price</surname> <given-names>DJ</given-names></string-name>, <string-name><surname>Rosswog</surname> <given-names>S</given-names></string-name></person-group>. <article-title>Producing ultra-strong magnetic fields in neutron star mergers</article-title>. <source>Science</source>. <year>2006</year>;<volume>312</volume>:<fpage>719</fpage>&#x2013;<lpage>22</lpage>. doi:<pub-id pub-id-type="doi">10.1126/science.1125201</pub-id>; <pub-id pub-id-type="pmid">16574823</pub-id></mixed-citation></ref>
<ref id="ref-60"><label>[60]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Giacomazzo</surname> <given-names>B</given-names></string-name>, <string-name><surname>Zrake</surname> <given-names>J</given-names></string-name>, <string-name><surname>Duffell</surname> <given-names>PC</given-names></string-name>, <string-name><surname>MacFadyen</surname> <given-names>AI</given-names></string-name>, <string-name><surname>Perna</surname> <given-names>R</given-names></string-name></person-group>. <article-title>Producing magnetar magnetic fields in the merger of binary neutron stars</article-title>. <source>ApJ</source>. <year>2015</year>;<volume>809</volume>(<issue>1</issue>):<fpage>39</fpage>. doi:<pub-id pub-id-type="doi">10.1088/0004-637x/809/1/39</pub-id>.</mixed-citation></ref>
<ref id="ref-61"><label>[61]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Kiuchi</surname> <given-names>K</given-names></string-name>, <string-name><surname>Cerd&#x00E1;-Dur&#x00E1;n</surname> <given-names>P</given-names></string-name>, <string-name><surname>Kyutoku</surname> <given-names>K</given-names></string-name>, <string-name><surname>Sekiguchi</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Shibata.</surname> <given-names>M</given-names></string-name></person-group>. <article-title>Efficient magnetic-field amplification due to the Kelvin-Helmholtz instability in binary neutron star mergers</article-title>. <source>Phys Rev D</source>. <year>2015</year>;<volume>92</volume>(<issue>12</issue>):<fpage>124034</fpage>. doi:<pub-id pub-id-type="doi">10.1103/physrevd.92.124034</pub-id>.</mixed-citation></ref>
<ref id="ref-62"><label>[62]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Johnson</surname> <given-names>JR</given-names></string-name>, <string-name><surname>Wing</surname> <given-names>S</given-names></string-name>, <string-name><surname>Delamere</surname> <given-names>PA</given-names></string-name></person-group>. <article-title>Kelvin helmholtz instability in planetary magnetospheres</article-title>. <source>Space Sci Rev</source>. <year>2014</year>;<volume>184</volume>(<issue>1&#x2013;4</issue>):<fpage>1</fpage>&#x2013;<lpage>31</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s11214-014-0085-z</pub-id>.</mixed-citation></ref>
<ref id="ref-63"><label>[63]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Agertz</surname> <given-names>O</given-names></string-name>, <string-name><surname>Moore</surname> <given-names>B</given-names></string-name>, <string-name><surname>Stadel</surname> <given-names>J</given-names></string-name>, <string-name><surname>Potter</surname> <given-names>D</given-names></string-name>, <string-name><surname>Miniati</surname> <given-names>F</given-names></string-name>, <string-name><surname>Read</surname> <given-names>J</given-names></string-name>, <etal>et al</etal></person-group>. <article-title>Fundamental differences between SPH and grid methods</article-title>. <source>MNRAS</source>. <year>2007</year>;<volume>380</volume>(<issue>3</issue>):<fpage>963</fpage>&#x2013;<lpage>78</lpage>. doi:<pub-id pub-id-type="doi">10.1111/j.1365-2966.2007.12183.x</pub-id>.</mixed-citation></ref>
<ref id="ref-64"><label>[64]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>McNally</surname> <given-names>CP</given-names></string-name>, <string-name><surname>Lyra</surname> <given-names>W</given-names></string-name>, <string-name><surname>Passy</surname> <given-names>J-C</given-names></string-name></person-group>. <article-title>A well-posed kelvin-helmholtz instability test and comparison</article-title>. <source>ApJS</source>. <year>2012</year>;<volume>201</volume>:<fpage>18</fpage>. doi:<pub-id pub-id-type="doi">10.1088/0067-0049/201/2/18</pub-id>.</mixed-citation></ref>
<ref id="ref-65"><label>[65]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Brandenburg</surname> <given-names>A</given-names></string-name>, <string-name><surname>Dobler</surname> <given-names>W</given-names></string-name></person-group>. <article-title>Hydromagnetic turbulence in computer simulations</article-title>. <source>Comput Phys Commun</source>. <year>2002</year>;<volume>147</volume>(<issue>1&#x2013;2</issue>):<fpage>471</fpage>&#x2013;<lpage>5</lpage>. doi:<pub-id pub-id-type="doi">10.1016/s0010-4655(02)00334-x</pub-id>.</mixed-citation></ref>
<ref id="ref-66"><label>[66]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Duffell</surname> <given-names>PC</given-names></string-name></person-group>. <article-title>DISCO: a 3D moving-mesh magnetohydrodynamics code designed for the study of astrophysical disks</article-title>. <source>Ap J Supp</source>. <year>2016</year>;<volume>226</volume>(<issue>1</issue>):<fpage>2</fpage>. doi:<pub-id pub-id-type="doi">10.3847/0067-0049/226/1/2</pub-id>.</mixed-citation></ref>
<ref id="ref-67"><label>[67]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Abel</surname> <given-names>T</given-names></string-name></person-group>. <article-title>rpSPH: a novel smoothed particle hydrodynamics algorithm</article-title>. <source>MNRAS</source>. <year>2011</year>;<volume>413</volume>(<issue>1</issue>):<fpage>271</fpage>&#x2013;<lpage>85</lpage>. doi:<pub-id pub-id-type="doi">10.1111/j.1365-2966.2010.18133.x</pub-id>.</mixed-citation></ref>
<ref id="ref-68"><label>[68]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Saitoh</surname> <given-names>TR</given-names></string-name>, <string-name><surname>Makino</surname> <given-names>J</given-names></string-name></person-group>. <article-title>A density-independent formulation of smoothed particle hydrodynamics</article-title>. <source>ApJ</source>. <year>2013</year>;<volume>768</volume>(<issue>1</issue>):<fpage>44</fpage>. doi:<pub-id pub-id-type="doi">10.1088/0004-637x/768/1/44</pub-id>.</mixed-citation></ref>
<ref id="ref-69"><label>[69]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lax</surname> <given-names>P</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>XD</given-names></string-name></person-group>. <article-title>Solution of two-dimensional Riemann problems of gas dynamics by positive schemes</article-title>. <source>SIAM J Sci Comput</source>. <year>1998</year>;<volume>19</volume>(<issue>2</issue>):<fpage>319</fpage>&#x2013;<lpage>40</lpage>. doi:<pub-id pub-id-type="doi">10.1137/s1064827595291819</pub-id>.</mixed-citation></ref>
<ref id="ref-70"><label>[70]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Kurganov</surname> <given-names>A</given-names></string-name>, <string-name><surname>Tadmor</surname> <given-names>E</given-names></string-name></person-group>. <article-title>Solution of two-dimensional riemann problems for gas dynamics without riemann problem solvers</article-title>. <source>Numer Methods Partial Differ Equ</source>. <year>2002</year>;<volume>18</volume>(<issue>5</issue>):<fpage>584</fpage>&#x2013;<lpage>608</lpage>. doi:<pub-id pub-id-type="doi">10.1002/num.10025</pub-id>.</mixed-citation></ref>
<ref id="ref-71"><label>[71]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liska</surname> <given-names>R</given-names></string-name>, <string-name><surname>Wendroff</surname> <given-names>B</given-names></string-name></person-group>. <article-title>Comparison of several difference schemes on 1D and 2D test problems for the euler equations</article-title>. <source>SIAM J Sci Comput</source>. <year>2003</year>;<volume>25</volume>(<issue>3</issue>):<fpage>995</fpage>&#x2013;<lpage>1017</lpage>. doi:<pub-id pub-id-type="doi">10.1137/s1064827502402120</pub-id>.</mixed-citation></ref>
<ref id="ref-72"><label>[72]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Price</surname> <given-names>DJ</given-names></string-name></person-group>. <article-title>splash: an interactive visualisation tool for smoothed particle hydrodynamics simulations</article-title>. <source>Publ Astron Soc Aust</source>. <year>2007</year>;<volume>24</volume>(<issue>3</issue>):<fpage>159</fpage>&#x2013;<lpage>73</lpage>. doi:<pub-id pub-id-type="doi">10.1071/as07022</pub-id>.</mixed-citation></ref>
</ref-list>
</back></article>