Abstract

A new Active Flux method for the multi-dimensional Euler equations is based on an additive operator splitting into acoustics and advection. The acoustic operator is solved in a locally linearized manner by using the exact evolution operator. The nonlinear advection operator is solved at third order accuracy using a new approximate evolution operator. To simplify the splitting, the new method uses primitive variables for the point values and for the reconstruction. In order to handle discontinuous solutions, a blended bound preserving limiting is used, that combines a priori and a posteriori approaches. The resulting method is able to resolve multi-dimensional Riemann problems as well as low Mach number flow, and has a large domain of stability.

Keywords: Active Flux, Euler equations

Mathematics Subject Classification (2010): 65M08, 65M70, 76M12, 35L45

Wasilij Barsukow111Bordeaux Institute of Mathematics, Bordeaux University and CNRS/UMR5251, Talence, 33405 France, wasilij.barsukow@math.u-bordeaux.fr

1 Introduction

The Active Flux method, originally introduced for 1-d linear advection in [vL77], has received much attention since the pioneering works [ER11b, ER13]. As degrees of freedom, it employs averages and point values at cell interfaces. These are independent, i.e. the Active Flux method consists of update equations for both the averages and the point values. The former is easy to obtain for conservation laws: since the point values are located at cell interfaces, the flux can be directly evaluated; no Riemann solvers are needed and one recognizes the continuous nature of the spatial approximation. While the update of the averages is ā€œexactā€, i.e. as accurate as the point values, it cannot incorporate upwinding, since the latter always implies some kind of additional, artificial diffusion.

It is the point values which need to include the upwinding necessary for stability. The initial method from [vL77] uses characteristic tracing and a reconstruction, whose value at the foot of the characteristic is taken as the point value at the next time step. This procedure naturally includes upwinding, of course, and yields a one-stage method stable up to CFL=1CFL1\text{CFL}=1CFL = 1. Generalizations of this update procedure appeared under the name of (approximate) evolution operators in e.g. [ER13, Fan17, BHKR19, Bar21a, CHLM24].

It was shown in [Bar21a] that one needs to go one order of accuracy beyond local linearization to obtain a third-order Active Flux method. For Burgers’ equation āˆ‚tu+uā¢āˆ‚xu=0subscriptš‘”š‘¢š‘¢subscriptš‘„š‘¢0\partial_{t}u+u\partial_{x}u=0āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_u + italic_u āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_u = 0, instead of the local linearization x↦xāˆ’u⁢(x)⁢tmaps-toš‘„š‘„š‘¢š‘„š‘”x\mapsto x-u(x)titalic_x ↦ italic_x - italic_u ( italic_x ) italic_t, for example, [Roe17] suggests to use

x↦xāˆ’u⁢(x)⁢t1+tā¢āˆ‚xu⁢(x)ā‰ƒxāˆ’u⁢(x)⁢t+t2⁢u⁢(x)ā¢āˆ‚xu⁢(x)+š’Ŗā¢(t3)maps-toš‘„š‘„š‘¢š‘„š‘”1š‘”subscriptš‘„š‘¢š‘„similar-to-or-equalsš‘„š‘¢š‘„š‘”superscriptš‘”2š‘¢š‘„subscriptš‘„š‘¢š‘„š’Ŗsuperscriptš‘”3\displaystyle x\mapsto x-\frac{u(x)t}{1+t\partial_{x}u(x)}\simeq x-u(x)t+t^{2}% u(x)\partial_{x}u(x)+\mathcal{O}(t^{3})italic_x ↦ italic_x - divide start_ARG italic_u ( italic_x ) italic_t end_ARG start_ARG 1 + italic_t āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_u ( italic_x ) end_ARG ā‰ƒ italic_x - italic_u ( italic_x ) italic_t + italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_u ( italic_x ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_u ( italic_x ) + caligraphic_O ( italic_t start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT ) (1)

while [Bar21a] proposes to iterate

x↦xāˆ’u⁢(xāˆ’u⁢(x)⁢t)⁢tā‰ƒxāˆ’u⁢(x)⁢t+t2⁢u⁢(x)ā¢āˆ‚xu⁢(x)+š’Ŗā¢(t3)maps-toš‘„š‘„š‘¢š‘„š‘¢š‘„š‘”š‘”similar-to-or-equalsš‘„š‘¢š‘„š‘”superscriptš‘”2š‘¢š‘„subscriptš‘„š‘¢š‘„š’Ŗsuperscriptš‘”3\displaystyle x\mapsto x-u\Big{(}x-u(x)t\Big{)}t\simeq x-u(x)t+t^{2}u(x)% \partial_{x}u(x)+\mathcal{O}(t^{3})italic_x ↦ italic_x - italic_u ( italic_x - italic_u ( italic_x ) italic_t ) italic_t ā‰ƒ italic_x - italic_u ( italic_x ) italic_t + italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_u ( italic_x ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_u ( italic_x ) + caligraphic_O ( italic_t start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT ) (2)

In [Bar21a], a sufficiently accurate approximate evolution operator was achieved for any hyperbolic system of conservation laws in one spatial dimension. It has been shown that it is by no means sufficient to merely iterate the linearization a few times to achieve third order of accuracy – this only works for scalar conservation laws since their characteristics are straight even in the nonlinear case (see Section 3.4 for further explanations). An alternative, ADER-inspired approach is [HKS19].

Concerning multiple spatial dimensions, early effort ([Fan17, BHKR19]) focused on the equations of linear acoustics and the corresponding evolution operator. The exact solution for a general class of data (in particular those not differentiable) was obtained in [BK22], initially destined to study genuinely multi-dimensional Godunov methods. The exact solution was used to demonstrate that even the complete solution of the multi-dimensional Riemann problem does not render a Godunov method stationarity or vorticity preserving. In [BHKR19] the exact acoustic evolution operator was used to construct an Active Flux method on two-dimensional Cartesian grids. Contrary to the Godunov method, the Active Flux method did turn out to be stationarity and vorticity preserving.

To construct an evolution operator for nonlinear systems of conservation laws in multi-d is significantly more difficult, since third order accuracy requires going beyond local linearization. At this point, in [Abg22, AB23], a semi-discrete version of Active Flux appeared. There, the point value is evolved according to an ODE in time, with the space derivative replaced by a finite difference formula (a non-standard one, since it involves both point values and averages in some neighbourhood of the degree of freedom). The time discretization is provided by a standard Runge-Kutta method according to the method of lines. The advantage of this approach is its immediate applicability to nonlinear systems in multi-d (e.g. [AL24, ABK25, DBK25]), with the structure preserving properties still in place ([BKKL24]). A slight disadvantage are the reduced low CFL numbers (0.2 and less), which [Roe21] connects to the usage of a multistage Runge-Kutta method. In fact, particular choices of less compact finite difference formulas do yield stability all the way up to CFL=1CFL1\text{CFL}=1CFL = 1 for RK3 ([AB23]), but they are difficult to generalize in multi-d. However, undeniably, a Runge-Kutta method adds its own numerical diffusion.

The continuous approximation lets the semi-discrete Active Flux method appear different from, say, the Discontinuous Galerkin method, but the absence of the evolution operator also moves it away from van Leer’s and Roe’s original ideas. In the context of implicit methods for linear advection it was shown in [BB24] that one-stage implicit Active Flux methods obtained using an evolution operator were significantly better than semi-discrete Active Flux methods integrated with standard (implicit) integrators, at the same (or less) cost. This allows to conjecture that it might be worth striving for an Active Flux method for the Euler equations in multi-d that is based on evolution operators.

To the author’s knowledge, two such evolution-operator based Active Flux methods for multi-d Euler equations are available in the literature. [RMF18] suggests to start out from a Lax-Wendroff/Cauchy-Kowalevskaya expansion. The terms š’Ŗā¢(t)š’Ŗš‘”\mathcal{O}(t)caligraphic_O ( italic_t ) involve locally linearized acoustics and advection separately, while terms š’Ŗā¢(t2)š’Ŗsuperscriptš‘”2\mathcal{O}(t^{2})caligraphic_O ( italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) involve deviations from a pure local linearization and interactions between these operators. The treatment of these extra terms remains difficult. The different operators of the Euler equations were treated in [Fan17, Mae17], yet a clear prescription how the problematic terms are to be discretized seems still to be missing, as is an investigation what impact particular choices would have in practice.

The recent work [CHLM24] employs second-order approximations to the evolution operators of linear advection and acoustics, but does not split them. This requires treating all the ways how a tilted characteristic cone (subject to ā€œwindā€) can cut through the cells in the vicinity of a point value. Here, the high-order terms that would be required for a third-order method are not included.

In view of such difficulties there seems to exist a certain interest in accepting second-order accuracy in time in certain ingredients of the numerical method for the sake of computational efficiency. The practical value of a time integration whose order of accuracy is not quite matching that of space discretization might depend on the application in question and on the willingness to spend effort on implementation and to accept a possible increase in computational effort. It is, for example common practice to use e.g. RK3 in conjunction with arbitrarily high-order methods (e.g. [JS96, Vil19, AB23]). Formally second-order methods that employ space reconstruction of degree up to 6 can bring significant improvement even without the corresponding increase in order of accuracy in time ([LAB+24]).

This paper proposes to use

  1. –

    a simple operator split between acoustics and advection, unsurpassed in computational efficiency, yet second-order; with

  2. –

    a fully third-order approximate evolution operator for the (nonlinear) advection in multi-d, and

  3. –

    a locally linearized, yet otherwise exact evolution operator for acoustics.

The advantage of the exact evolution operator is the inclusion of all the multi-dimensional information. Moreover, since the linearized method reduces to [BHKR19], its von Neumann stability limit is the same (contrary to [CHLM24]). The present paper gives a large amount of detail concerning the efficient implementation of the exact evolution operator. A bound-preserving limiting strategy combining one similar to that in [DBK25] with an a posteriori limiting for the point values is presented as well.

The result is a method for the Euler equations, possibly having some similarity with [RMF18], yet also clear differences, e.g. in the choice of a non-conservative advective operator and the usage of primitive variables for the reconstruction and the point values (cell averages are, naturally, in conserved variables). The simultaneous usage of primitive and conservative formulations has been advertised in [AL24] for the semi-discrete Active Flux, and already in [Bar21a] primitive variables at point values were in use for the fully discrete Active Flux method. The difference of the present work to [CHLM24] is the usage of the exact evolution operator, with more accuracy at essentially the same computational cost due to efficient implementation, and the algorithmic simplification that is brought about by the operator splitting. The purpose of this paper therefore is to present this simple one-stage method for the multi-d Euler equations. Beside that, the implementation details concerning the exact evolution operator for linear acoustics, at that time not included in [BHKR19], hopefully can now serve as a reference for future use.

The paper’s organization is as follows: Section 2 introduces the efficient implementation of the evolution operator for linear acoustics, complemented by Appendix A detailing the computation of spherical means. The method for the Euler equations and its properties are described in Section 3, followed by the numerical results of Section 4. The Appendices B and C contain pseudocode implementations of the acoustic evolution operator.

In the following, computations often are performed in three space dimensions, and two-dimensional results are obtained by assuming that the functions involved do not depend on zš‘§zitalic_z. Vectors are set in boldface with, in particular, š±=(x,y,z)Tš±superscriptš‘„š‘¦š‘§T\mathbf{x}=(x,y,z)^{\text{T}}bold_x = ( italic_x , italic_y , italic_z ) start_POSTSUPERSCRIPT T end_POSTSUPERSCRIPT. The notation ššā‹…š›ā‹…ššš›\mathbf{a}\cdot\mathbf{b}bold_a ā‹… bold_b for šš,š›āˆˆā„nššš›superscriptā„š‘›\mathbf{a},\mathbf{b}\in\mathbb{R}^{n}bold_a , bold_b ∈ roman_ā„ start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT denotes the Euclidean scalar product of šššš\mathbf{a}bold_a and š›š›\mathbf{b}bold_b; S2:={š±āˆˆā„3:|š±|=1}assignsuperscriptš‘†2conditional-setš±superscriptā„3š±1S^{2}:=\{\mathbf{x}\in\mathbb{R}^{3}:|\mathbf{x}|=1\}italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT := { bold_x ∈ roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT : | bold_x | = 1 } is the unit sphere in three space dimensions.

2 Evolution operator for linear acoustics

The exact solution of linear acoustics

āˆ‚tšÆ+cā¢āˆ‡psubscriptš‘”šÆš‘āˆ‡š‘\displaystyle\partial_{t}\mathbf{v}+c\nabla pāˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT bold_v + italic_c āˆ‡ italic_p =0absent0\displaystyle=0= 0 šÆšÆ\displaystyle\mathbf{v}bold_v :ā„0+Ć—ā„3ā†’ā„3:absent→subscriptsuperscriptā„0superscriptā„3superscriptā„3\displaystyle\colon\mathbb{R}^{+}_{0}\times\mathbb{R}^{3}\to\mathbb{R}^{3}: roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT → roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT (3)
āˆ‚tp+cā¢āˆ‡ā‹…šÆsubscriptš‘”š‘ā‹…š‘āˆ‡šÆ\displaystyle\partial_{t}p+c\nabla\cdot\mathbf{v}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_p + italic_c āˆ‡ ā‹… bold_v =0absent0\displaystyle=0= 0 pš‘\displaystyle pitalic_p :ā„0+Ć—ā„3ā†’ā„:absent→subscriptsuperscriptā„0superscriptā„3ā„\displaystyle\colon\mathbb{R}^{+}_{0}\times\mathbb{R}^{3}\to\mathbb{R}: roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT → roman_ā„ (4)

on ā„3superscriptā„3\mathbb{R}^{3}roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT endowed with initial data (šÆ0,p0)subscriptšÆ0subscriptš‘0(\mathbf{v}_{0},p_{0})( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) is

p⁢(t,š±)š‘š‘”š±\displaystyle p(t,\mathbf{x})italic_p ( italic_t , bold_x ) =āˆ‚r(r⁢M⁢[p0]⁢(š±,r))āˆ’1rā¢āˆ‚r(r2⁢M⁢[š§ā‹…šÆ0]⁢(š±,r))absentsubscriptš‘Ÿš‘Ÿš‘€delimited-[]subscriptš‘0š±š‘Ÿ1š‘Ÿsubscriptš‘Ÿsuperscriptš‘Ÿ2š‘€delimited-[]ā‹…š§subscriptšÆ0š±š‘Ÿ\displaystyle=\partial_{r}\left(rM[p_{0}](\mathbf{x},r)\right)-\frac{1}{r}% \partial_{r}\left(r^{2}M[\mathbf{n}\cdot\mathbf{v}_{0}](\mathbf{x},r)\right)= āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r italic_M [ italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ] ( bold_x , italic_r ) ) - divide start_ARG 1 end_ARG start_ARG italic_r end_ARG āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_M [ bold_n ā‹… bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ] ( bold_x , italic_r ) ) (5)
šÆā¢(t,š±)šÆš‘”š±\displaystyle\mathbf{v}(t,\mathbf{x})bold_v ( italic_t , bold_x ) =23ā¢šÆ0⁢(š±)āˆ’1rā¢āˆ‚r(r2⁢M⁢[p0ā¢š§]⁢(š±,r))+āˆ‚r(r⁢M⁢[(šÆ0ā‹…š§)ā¢š§]⁢(š±,r))absent23subscriptšÆ0š±1š‘Ÿsubscriptš‘Ÿsuperscriptš‘Ÿ2š‘€delimited-[]subscriptš‘0š§š±š‘Ÿsubscriptš‘Ÿš‘Ÿš‘€delimited-[]ā‹…subscriptšÆ0š§š§š±š‘Ÿ\displaystyle=\frac{2}{3}\mathbf{v}_{0}(\mathbf{x})-\frac{1}{r}\partial_{r}% \left(r^{2}M[p_{0}\mathbf{n}](\mathbf{x},r)\right)+\partial_{r}\left(rM[(% \mathbf{v}_{0}\cdot\mathbf{n})\mathbf{n}](\mathbf{x},r)\right)= divide start_ARG 2 end_ARG start_ARG 3 end_ARG bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) - divide start_ARG 1 end_ARG start_ARG italic_r end_ARG āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_M [ italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT bold_n ] ( bold_x , italic_r ) ) + āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r italic_M [ ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… bold_n ) bold_n ] ( bold_x , italic_r ) )
āˆ’M⁢[šÆ0āˆ’3⁢(šÆ0ā‹…š§)ā¢š§]⁢(š±,r)āˆ’āˆ«0c⁢tdr⁢1r⁢M⁢[šÆ0āˆ’3⁢(šÆ0ā‹…š§)ā¢š§]⁢(š±,r)š‘€delimited-[]subscriptšÆ03ā‹…subscriptšÆ0š§š§š±š‘Ÿsuperscriptsubscript0š‘š‘”differential-dš‘Ÿ1š‘Ÿš‘€delimited-[]subscriptšÆ03ā‹…subscriptšÆ0š§š§š±š‘Ÿ\displaystyle-M\left[\mathbf{v}_{0}-3(\mathbf{v}_{0}\cdot\mathbf{n})\mathbf{n}% \right](\mathbf{x},r)-\int_{0}^{ct}\mathrm{d}r\frac{1}{r}M\left[\mathbf{v}_{0}% -3(\mathbf{v}_{0}\cdot\mathbf{n})\mathbf{n}\right](\mathbf{x},r)- italic_M [ bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT - 3 ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… bold_n ) bold_n ] ( bold_x , italic_r ) - ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_c italic_t end_POSTSUPERSCRIPT roman_d italic_r divide start_ARG 1 end_ARG start_ARG italic_r end_ARG italic_M [ bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT - 3 ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… bold_n ) bold_n ] ( bold_x , italic_r ) (6)

where all formulae are understood to be evaluated at r=c⁢tš‘Ÿš‘š‘”r=ctitalic_r = italic_c italic_t after performing all the differentiations (see [BK22] for the derivation) and M⁢[f]:ā„3Ć—ā„0+ā†’ā„:š‘€delimited-[]š‘“ā†’superscriptā„3subscriptsuperscriptā„0ā„M[f]\colon\mathbb{R}^{3}\times\mathbb{R}^{+}_{0}\to\mathbb{R}italic_M [ italic_f ] : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT → roman_ā„ is the spherical mean of f:ā„3ā†’ā„:š‘“ā†’superscriptā„3ā„f\colon\mathbb{R}^{3}\to\mathbb{R}italic_f : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT → roman_ā„, defined as

M⁢[f]⁢(š±,r)š‘€delimited-[]š‘“š±š‘Ÿ\displaystyle M[f](\mathbf{x},r)italic_M [ italic_f ] ( bold_x , italic_r ) :=14ā¢Ļ€ā¢āˆ«S2dš²ā¢f⁢(š±+rā¢š²)assignabsent14šœ‹subscriptsuperscriptš‘†2differential-dš²š‘“š±š‘Ÿš²\displaystyle:=\frac{1}{4\pi}\int_{S^{2}}\mathrm{d}\mathbf{y}\,f(\mathbf{x}+r% \mathbf{y}):= divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_POSTSUBSCRIPT roman_d bold_y italic_f ( bold_x + italic_r bold_y ) (7)

For the definition of spherical means such as M⁢[š§ā‹…šÆ0]š‘€delimited-[]ā‹…š§subscriptšÆ0M[\mathbf{n}\cdot\mathbf{v}_{0}]italic_M [ bold_n ā‹… bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ], see Section A first. The data (šÆ0,p0)subscriptšÆ0subscriptš‘0(\mathbf{v}_{0},p_{0})( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) needs generally to be twice continuously differentiable for the solution formula from [Fan17] to be applicable, while (5)–(6) has the advantage that it only requires regularity with respect to the distance variable rš‘Ÿritalic_r. Thus, it remains valid even if the data are discontinuous, as long as the discontinuities are straight lines through š±š±\mathbf{x}bold_x, and this is precisely what is needed in the numerical setting. The formulation (5)–(6) thus avoids having to deal with distributions.

This formula is valid in three spatial dimensions, but one can of course restrict oneself to initial data that do not depend on certain variables, or initial velocity fields with certain components zero. In the following, uš‘¢uitalic_u and vš‘£vitalic_v will be used to denote the xš‘„xitalic_x and yš‘¦yitalic_y components of šÆšÆ\mathbf{v}bold_v.

The degrees of freedom of Active Flux are located at edges and nodes, with data being piecewise polynomial. It thus makes sense to divide the solution up in contributions of half-planes/quadrants. Consider, more generally, initial data in some wedge W=[φmin,φmax)Ɨ[0,2⁢π]š‘Šsubscriptšœ‘minsubscriptšœ‘max02šœ‹W=[\varphi_{\text{min}},\varphi_{\text{max}})\times[0,2\pi]italic_W = [ italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT ) Ɨ [ 0 , 2 italic_Ļ€ ] centered at š±š±\mathbf{x}bold_x and denote by pW⁢(t,š±),šÆW⁢(t,š±)superscriptš‘š‘Šš‘”š±superscriptšÆš‘Šš‘”š±p^{W}(t,\mathbf{x}),\mathbf{v}^{W}(t,\mathbf{x})italic_p start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , bold_x ) , bold_v start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , bold_x ) the solution obtained by taking in (5)–(6) everywhere spherical averages MWsuperscriptš‘€š‘ŠM^{W}italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT over the wedge instead of Mš‘€Mitalic_M. Then, if {Wi}isubscriptsuperscriptš‘Šš‘–š‘–\{W^{i}\}_{i}{ italic_W start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT } start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is a finite partition of [0,2⁢π)Ɨ[0,2⁢π]02šœ‹02šœ‹[0,2\pi)\times[0,2\pi][ 0 , 2 italic_Ļ€ ) Ɨ [ 0 , 2 italic_Ļ€ ], then

M⁢[f]⁢(x,r)š‘€delimited-[]š‘“š‘„š‘Ÿ\displaystyle M[f](x,r)italic_M [ italic_f ] ( italic_x , italic_r ) =14ā¢Ļ€ā¢āˆ«ā‹ƒiWidš²ā¢f⁢(š±+rā¢š²)=14ā¢Ļ€ā¢āˆ‘i2⁢(Δ⁢φ)i⁢12⁢(Δ⁢φ)i⁢∫Widš²ā¢f⁢(š±+rā¢š²)absent14šœ‹subscriptsubscriptš‘–subscriptš‘Šš‘–differential-dš²š‘“š±š‘Ÿš²14šœ‹subscriptš‘–2subscriptĪ”šœ‘š‘–12subscriptĪ”šœ‘š‘–subscriptsubscriptš‘Šš‘–differential-dš²š‘“š±š‘Ÿš²\displaystyle=\frac{1}{4\pi}\int_{\bigcup_{i}W_{i}}\mathrm{d}\mathbf{y}f(% \mathbf{x}+r\mathbf{y})=\frac{1}{4\pi}\sum_{i}2(\Delta\varphi)_{i}\frac{1}{2(% \Delta\varphi)_{i}}\int_{W_{i}}\mathrm{d}\mathbf{y}f(\mathbf{x}+r\mathbf{y})= divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT ā‹ƒ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_W start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT roman_d bold_y italic_f ( bold_x + italic_r bold_y ) = divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 2 ( roman_Ī” italic_φ ) start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT divide start_ARG 1 end_ARG start_ARG 2 ( roman_Ī” italic_φ ) start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_ARG ∫ start_POSTSUBSCRIPT italic_W start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT roman_d bold_y italic_f ( bold_x + italic_r bold_y ) (8)
=12ā¢Ļ€ā¢āˆ‘i(Δ⁢φ)i⁢MWi⁢[f]⁢(x,r)absent12šœ‹subscriptš‘–subscriptĪ”šœ‘š‘–superscriptš‘€subscriptš‘Šš‘–delimited-[]š‘“š‘„š‘Ÿ\displaystyle=\frac{1}{2\pi}\sum_{i}(\Delta\varphi)_{i}M^{W_{i}}[f](x,r)= divide start_ARG 1 end_ARG start_ARG 2 italic_Ļ€ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( roman_Ī” italic_φ ) start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_M start_POSTSUPERSCRIPT italic_W start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT [ italic_f ] ( italic_x , italic_r ) (9)

Thus,

p⁢(t,š±)š‘š‘”š±\displaystyle p(t,\mathbf{x})italic_p ( italic_t , bold_x ) =12ā¢Ļ€ā¢āˆ‘i|Wi|⁢pWi⁢(t,š±)absent12šœ‹subscriptš‘–subscriptš‘Šš‘–superscriptš‘subscriptš‘Šš‘–š‘”š±\displaystyle=\frac{1}{2\pi}\sum_{i}|W_{i}|p^{W_{i}}(t,\mathbf{x})= divide start_ARG 1 end_ARG start_ARG 2 italic_Ļ€ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | italic_W start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | italic_p start_POSTSUPERSCRIPT italic_W start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ( italic_t , bold_x ) šÆā¢(t,š±)šÆš‘”š±\displaystyle\mathbf{v}(t,\mathbf{x})bold_v ( italic_t , bold_x ) =12ā¢Ļ€ā¢āˆ‘i|Wi|ā¢šÆWi⁢(t,š±)absent12šœ‹subscriptš‘–subscriptš‘Šš‘–superscriptšÆsubscriptš‘Šš‘–š‘”š±\displaystyle=\frac{1}{2\pi}\sum_{i}|W_{i}|\mathbf{v}^{W_{i}}(t,\mathbf{x})= divide start_ARG 1 end_ARG start_ARG 2 italic_Ļ€ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | italic_W start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | bold_v start_POSTSUPERSCRIPT italic_W start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ( italic_t , bold_x ) (10)

The ability to combine solutions across wedges as a simple sum is a consequence of the solution formula above. Finally, when applying the solution formula for every degree of freedom, š±š±\mathbf{x}bold_x is fixed and the result is simply a polynomial in tš‘”titalic_t with easily precomputable coefficients. The next sections state these polynomials; by linearity one can consider initial data in different variables separately. For the sake of giving the reader a quicker access to the Section 3, which goes on to develop a method for the Euler equations, detailed computations are found in the Appendix A.

2.1 Initial data in pš‘pitalic_p

First, consider initial data in pš‘pitalic_p only. The reconstructions in use are always polynomial; hence assume that p0⁢(x,y)=xa⁢ybsubscriptš‘0š‘„š‘¦superscriptš‘„š‘Žsuperscriptš‘¦š‘p_{0}(x,y)=x^{a}y^{b}italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) = italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT in some wedge Wš‘ŠWitalic_W. Then

pW⁢(t,š±)superscriptš‘š‘Šš‘”š±\displaystyle p^{W}(t,\mathbf{x})italic_p start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , bold_x ) =āˆ‚r(r⁢M⁢[p0]⁢(š±,r))|r=c⁢tabsentevaluated-atsubscriptš‘Ÿš‘Ÿš‘€delimited-[]subscriptš‘0š±š‘Ÿš‘Ÿš‘š‘”\displaystyle=\partial_{r}\left(rM[p_{0}](\mathbf{x},r)\right)\Big{|}_{r=ct}= āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r italic_M [ italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ] ( bold_x , italic_r ) ) | start_POSTSUBSCRIPT italic_r = italic_c italic_t end_POSTSUBSCRIPT (11)
=(⁢162⁢)ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢(aāˆ’k+bāˆ’ā„“+1)⁢(c⁢t)aāˆ’k+bāˆ’ā„“ā¢Ī¼aāˆ’k,bāˆ’ā„“W2⁢Δ⁢φ⁢ηaāˆ’k+bāˆ’ā„“+1italic-(162italic-)superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“š‘Žš‘˜š‘ā„“1superscriptš‘š‘”š‘Žš‘˜š‘ā„“superscriptsubscriptšœ‡š‘Žš‘˜š‘ā„“š‘Š2Ī”šœ‘subscriptšœ‚š‘Žš‘˜š‘ā„“1\displaystyle\overset{\eqref{eq:sphericalmeanscalarfunction}}{=}\sum_{k=0}^{a}% \sum_{\ell=0}^{b}{a\choose k}{b\choose\ell}x^{k}y^{\ell}(a-k+b-\ell+1)(ct)^{a-% k+b-\ell}\frac{\mu_{a-k,b-\ell}^{W}}{2\Delta\varphi}\eta_{a-k+b-\ell+1}start_OVERACCENT italic_( italic_) end_OVERACCENT start_ARG = end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT ( italic_a - italic_k + italic_b - roman_ā„“ + 1 ) ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT divide start_ARG italic_μ start_POSTSUBSCRIPT italic_a - italic_k , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT (12)
=š±=0⁢(a+b+1)⁢(c⁢t)a+b⁢μa⁢bW2⁢Δ⁢φ⁢ηa+b+1š±0š‘Žš‘1superscriptš‘š‘”š‘Žš‘superscriptsubscriptšœ‡š‘Žš‘š‘Š2Ī”šœ‘subscriptšœ‚š‘Žš‘1\displaystyle\overset{\mathbf{x}=0}{=}(a+b+1)(ct)^{a+b}\frac{\mu_{ab}^{W}}{2% \Delta\varphi}\eta_{a+b+1}start_OVERACCENT bold_x = 0 end_OVERACCENT start_ARG = end_ARG ( italic_a + italic_b + 1 ) ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a + italic_b end_POSTSUPERSCRIPT divide start_ARG italic_μ start_POSTSUBSCRIPT italic_a italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG italic_Ī· start_POSTSUBSCRIPT italic_a + italic_b + 1 end_POSTSUBSCRIPT (13)
šÆW⁢(t,š±)superscriptšÆš‘Šš‘”š±\displaystyle\mathbf{v}^{W}(t,\mathbf{x})bold_v start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , bold_x ) =āˆ’1rā¢āˆ‚r(r2⁢M⁢[p0ā¢š§]⁢(š±,r))|r=c⁢tabsentevaluated-at1š‘Ÿsubscriptš‘Ÿsuperscriptš‘Ÿ2š‘€delimited-[]subscriptš‘0š§š±š‘Ÿš‘Ÿš‘š‘”\displaystyle=-\frac{1}{r}\partial_{r}\left(r^{2}M[p_{0}\mathbf{n}](\mathbf{x}% ,r)\right)\Big{|}_{r=ct}= - divide start_ARG 1 end_ARG start_ARG italic_r end_ARG āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_M [ italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT bold_n ] ( bold_x , italic_r ) ) | start_POSTSUBSCRIPT italic_r = italic_c italic_t end_POSTSUBSCRIPT (14)
=(⁢162⁢)āˆ’12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢(aāˆ’k+bāˆ’ā„“+2)⁢(c⁢t)aāˆ’k+bāˆ’ā„“italic-(162italic-)12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“š‘Žš‘˜š‘ā„“2superscriptš‘š‘”š‘Žš‘˜š‘ā„“\displaystyle\overset{\eqref{eq:sphericalmeanscalarfunction}}{=}-\frac{1}{2% \Delta\varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k}{b\choose\ell}x^{k}y^% {\ell}(a-k+b-\ell+2)(ct)^{a-k+b-\ell}start_OVERACCENT italic_( italic_) end_OVERACCENT start_ARG = end_ARG - divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT ( italic_a - italic_k + italic_b - roman_ā„“ + 2 ) ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT (15)
Ɨ(μaāˆ’k+1,bāˆ’ā„“Wμaāˆ’k,bāˆ’ā„“+1W)⁢ηaāˆ’k+bāˆ’ā„“+2absentsuperscriptsubscriptšœ‡š‘Žš‘˜1š‘ā„“š‘Šsuperscriptsubscriptšœ‡š‘Žš‘˜š‘ā„“1š‘Šsubscriptšœ‚š‘Žš‘˜š‘ā„“2\displaystyle\phantom{mmmmmmmmmmmmmmmmmmmmmmmm}\times\left(\begin{array}[]{c}% \mu_{a-k+1,b-\ell}^{W}\\ \mu_{a-k,b-\ell+1}^{W}\\ \end{array}\right)\eta_{a-k+b-\ell+2}Ɨ ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW end_ARRAY ) italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 2 end_POSTSUBSCRIPT (18)
=š±=0āˆ’12⁢Δ⁢φ⁢(a+b+2)⁢(c⁢t)a+b⁢(μa+1,bWμa,b+1W)⁢ηa+b+2š±012Ī”šœ‘š‘Žš‘2superscriptš‘š‘”š‘Žš‘superscriptsubscriptšœ‡š‘Ž1š‘š‘Šsuperscriptsubscriptšœ‡š‘Žš‘1š‘Šsubscriptšœ‚š‘Žš‘2\displaystyle\overset{\mathbf{x}=0}{=}-\frac{1}{2\Delta\varphi}(a+b+2)(ct)^{a+% b}\left(\begin{array}[]{c}\mu_{a+1,b}^{W}\\ \mu_{a,b+1}^{W}\\ \end{array}\right)\eta_{a+b+2}start_OVERACCENT bold_x = 0 end_OVERACCENT start_ARG = end_ARG - divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG ( italic_a + italic_b + 2 ) ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a + italic_b end_POSTSUPERSCRIPT ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a + 1 , italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a , italic_b + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW end_ARRAY ) italic_Ī· start_POSTSUBSCRIPT italic_a + italic_b + 2 end_POSTSUBSCRIPT (21)

2.2 Initial data in uš‘¢uitalic_u

Consider now šÆ0=(xa⁢yb,0,0)subscriptšÆ0superscriptš‘„š‘Žsuperscriptš‘¦š‘00\mathbf{v}_{0}=(x^{a}y^{b},0,0)bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = ( italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT , 0 , 0 ). Then, the solution reads

pW⁢(t,š±)superscriptš‘š‘Šš‘”š±\displaystyle p^{W}(t,\mathbf{x})italic_p start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , bold_x ) =āˆ’1rā¢āˆ‚r(r2⁢M⁢[š§ā‹…šÆ0]⁢(š±,r))|r=c⁢tabsentevaluated-at1š‘Ÿsubscriptš‘Ÿsuperscriptš‘Ÿ2š‘€delimited-[]ā‹…š§subscriptšÆ0š±š‘Ÿš‘Ÿš‘š‘”\displaystyle=-\frac{1}{r}\partial_{r}\left(r^{2}M[\mathbf{n}\cdot\mathbf{v}_{% 0}](\mathbf{x},r)\right)\Big{|}_{r=ct}= - divide start_ARG 1 end_ARG start_ARG italic_r end_ARG āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_M [ bold_n ā‹… bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ] ( bold_x , italic_r ) ) | start_POSTSUBSCRIPT italic_r = italic_c italic_t end_POSTSUBSCRIPT (22)
=(⁢167⁢)āˆ’12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢(aāˆ’k+bāˆ’ā„“+2)⁢(c⁢t)aāˆ’k+bāˆ’ā„“ā¢Ī¼aāˆ’k+1,bāˆ’ā„“W⁢ηaāˆ’k+bāˆ’ā„“+2italic-(167italic-)12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“š‘Žš‘˜š‘ā„“2superscriptš‘š‘”š‘Žš‘˜š‘ā„“superscriptsubscriptšœ‡š‘Žš‘˜1š‘ā„“š‘Šsubscriptšœ‚š‘Žš‘˜š‘ā„“2\displaystyle\overset{\eqref{eq:sphericalmeanvectorxspr}}{=}-\frac{1}{2\Delta% \varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k}{b\choose\ell}x^{k}y^{\ell}% (a-k+b-\ell+2)(ct)^{a-k+b-\ell}\mu_{a-k+1,b-\ell}^{W}\eta_{a-k+b-\ell+2}start_OVERACCENT italic_( italic_) end_OVERACCENT start_ARG = end_ARG - divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT ( italic_a - italic_k + italic_b - roman_ā„“ + 2 ) ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 2 end_POSTSUBSCRIPT (23)
=š±=0āˆ’12⁢Δ⁢φ⁢(a+b+2)⁢(c⁢t)a+b⁢μa+1,bW⁢ηa+b+2š±012Ī”šœ‘š‘Žš‘2superscriptš‘š‘”š‘Žš‘superscriptsubscriptšœ‡š‘Ž1š‘š‘Šsubscriptšœ‚š‘Žš‘2\displaystyle\overset{\mathbf{x}=0}{=}-\frac{1}{2\Delta\varphi}(a+b+2)(ct)^{a+% b}\mu_{a+1,b}^{W}\eta_{a+b+2}start_OVERACCENT bold_x = 0 end_OVERACCENT start_ARG = end_ARG - divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG ( italic_a + italic_b + 2 ) ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a + italic_b end_POSTSUPERSCRIPT italic_μ start_POSTSUBSCRIPT italic_a + 1 , italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a + italic_b + 2 end_POSTSUBSCRIPT (24)
šÆW⁢(t,š±)superscriptšÆš‘Šš‘”š±\displaystyle\mathbf{v}^{W}(t,\mathbf{x})bold_v start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , bold_x ) =23ā¢šÆ0⁢(š±)+āˆ‚r(r⁢M⁢[(šÆ0ā‹…š§)ā¢š§]⁢(š±,r))absent23subscriptšÆ0š±subscriptš‘Ÿš‘Ÿš‘€delimited-[]ā‹…subscriptšÆ0š§š§š±š‘Ÿ\displaystyle=\frac{2}{3}\mathbf{v}_{0}(\mathbf{x})+\partial_{r}\left(rM[(% \mathbf{v}_{0}\cdot\mathbf{n})\mathbf{n}](\mathbf{x},r)\right)= divide start_ARG 2 end_ARG start_ARG 3 end_ARG bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) + āˆ‚ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ( italic_r italic_M [ ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… bold_n ) bold_n ] ( bold_x , italic_r ) )
āˆ’M⁢[šÆ0āˆ’3⁢(šÆ0ā‹…š§)ā¢š§]⁢(š±,r)āˆ’āˆ«0c⁢tdr⁢1r⁢M⁢[šÆ0āˆ’3⁢(šÆ0ā‹…š§)ā¢š§]⁢(š±,r)|r=c⁢tš‘€delimited-[]subscriptšÆ03ā‹…subscriptšÆ0š§š§š±š‘Ÿevaluated-atsuperscriptsubscript0š‘š‘”differential-dš‘Ÿ1š‘Ÿš‘€delimited-[]subscriptšÆ03ā‹…subscriptšÆ0š§š§š±š‘Ÿš‘Ÿš‘š‘”\displaystyle-M\left[\mathbf{v}_{0}-3(\mathbf{v}_{0}\cdot\mathbf{n})\mathbf{n}% \right](\mathbf{x},r)-\int_{0}^{ct}\mathrm{d}r\frac{1}{r}M\left[\mathbf{v}_{0}% -3(\mathbf{v}_{0}\cdot\mathbf{n})\mathbf{n}\right](\mathbf{x},r)\Big{|}_{r=ct}- italic_M [ bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT - 3 ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… bold_n ) bold_n ] ( bold_x , italic_r ) - ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_c italic_t end_POSTSUPERSCRIPT roman_d italic_r divide start_ARG 1 end_ARG start_ARG italic_r end_ARG italic_M [ bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT - 3 ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… bold_n ) bold_n ] ( bold_x , italic_r ) | start_POSTSUBSCRIPT italic_r = italic_c italic_t end_POSTSUBSCRIPT (25)
=(⁢162⁢),(⁢172⁢)⁢23⁢(xa⁢yb0)italic-(162italic-)italic-(172italic-)23superscriptš‘„š‘Žsuperscriptš‘¦š‘0\displaystyle\overset{\eqref{eq:sphericalmeanscalarfunction},\eqref{eq:% sphericalmeannnx}}{=}\frac{2}{3}\left(\begin{array}[]{c}x^{a}y^{b}\\ 0\\ \end{array}\right)start_OVERACCENT italic_( italic_) , italic_( italic_) end_OVERACCENT start_ARG = end_ARG divide start_ARG 2 end_ARG start_ARG 3 end_ARG ( start_ARRAY start_ROW start_CELL italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL 0 end_CELL end_ROW end_ARRAY ) (28)
+12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢(aāˆ’k+bāˆ’ā„“+1)⁢(c⁢t)aāˆ’k+bāˆ’ā„“ā¢(μaāˆ’k+2,bāˆ’ā„“Wμaāˆ’k+1,bāˆ’ā„“+1W)⁢ηaāˆ’k+bāˆ’ā„“+312Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“š‘Žš‘˜š‘ā„“1superscriptš‘š‘”š‘Žš‘˜š‘ā„“superscriptsubscriptšœ‡š‘Žš‘˜2š‘ā„“š‘Šsuperscriptsubscriptšœ‡š‘Žš‘˜1š‘ā„“1š‘Šsubscriptšœ‚š‘Žš‘˜š‘ā„“3\displaystyle+\frac{1}{2\Delta\varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k% }{b\choose\ell}x^{k}y^{\ell}(a-k+b-\ell+1)(ct)^{a-k+b-\ell}\left(\begin{array}% []{c}\mu_{a-k+2,b-\ell}^{W}\\ \mu_{a-k+1,b-\ell+1}^{W}\\ \end{array}\right)\eta_{a-k+b-\ell+3}+ divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT ( italic_a - italic_k + italic_b - roman_ā„“ + 1 ) ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 2 , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW end_ARRAY ) italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT (31)
āˆ’12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢(μaāˆ’k,bāˆ’ā„“W⁢ηaāˆ’k+bāˆ’ā„“+1āˆ’3⁢μaāˆ’k+2,bāˆ’ā„“W⁢ηaāˆ’k+bāˆ’ā„“+3āˆ’3⁢μaāˆ’k+1,bāˆ’ā„“+1W⁢ηaāˆ’k+bāˆ’ā„“+3)12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptsubscriptšœ‡š‘Žš‘˜š‘ā„“š‘Šsubscriptšœ‚š‘Žš‘˜š‘ā„“13superscriptsubscriptšœ‡š‘Žš‘˜2š‘ā„“š‘Šsubscriptšœ‚š‘Žš‘˜š‘ā„“33superscriptsubscriptšœ‡š‘Žš‘˜1š‘ā„“1š‘Šsubscriptšœ‚š‘Žš‘˜š‘ā„“3\displaystyle-\frac{1}{2\Delta\varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k% }{b\choose\ell}x^{k}y^{\ell}\left(\begin{array}[]{c}\mu_{a-k,b-\ell}^{W}\eta_{% a-k+b-\ell+1}-3\mu_{a-k+2,b-\ell}^{W}\eta_{a-k+b-\ell+3}\\ -3\mu_{a-k+1,b-\ell+1}^{W}\eta_{a-k+b-\ell+3}\\ \end{array}\right)- divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT - 3 italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 2 , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL - 3 italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT end_CELL end_ROW end_ARRAY ) (34)
Ɨ((c⁢t)aāˆ’k+bāˆ’ā„“+∫0c⁢tdr⁢raāˆ’k+bāˆ’ā„“āˆ’1)absentsuperscriptš‘š‘”š‘Žš‘˜š‘ā„“superscriptsubscript0š‘š‘”differential-dš‘Ÿsuperscriptš‘Ÿš‘Žš‘˜š‘ā„“1\displaystyle\phantom{mmmmmmmmmmmmmmm}\times\left((ct)^{a-k+b-\ell}+\int_{0}^{% ct}\mathrm{d}r\,r^{a-k+b-\ell-1}\right)Ɨ ( ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT + ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_c italic_t end_POSTSUPERSCRIPT roman_d italic_r italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ - 1 end_POSTSUPERSCRIPT )

The integral ∫0c⁢tdr⁢raāˆ’k+bāˆ’ā„“āˆ’1superscriptsubscript0š‘š‘”differential-dš‘Ÿsuperscriptš‘Ÿš‘Žš‘˜š‘ā„“1\int_{0}^{ct}\mathrm{d}r\,r^{a-k+b-\ell-1}∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_c italic_t end_POSTSUPERSCRIPT roman_d italic_r italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ - 1 end_POSTSUPERSCRIPT is

(c⁢t)aāˆ’k+bāˆ’ā„“aāˆ’k+bāˆ’ā„“if ⁢aāˆ’k+bāˆ’ā„“ā‰ 0superscriptš‘š‘”š‘Žš‘˜š‘ā„“š‘Žš‘˜š‘ā„“ifĀ š‘Žš‘˜š‘ā„“0\displaystyle\frac{(ct)^{a-k+b-\ell}}{a-k+b-\ell}\qquad\text{if }a-k+b-\ell\neq 0divide start_ARG ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT end_ARG start_ARG italic_a - italic_k + italic_b - roman_ā„“ end_ARG if italic_a - italic_k + italic_b - roman_ā„“ ≠ 0 (35)

The condition is violated when k=aš‘˜š‘Žk=aitalic_k = italic_a and ā„“=bā„“š‘\ell=broman_ā„“ = italic_b. One can show that for continuous initial data, the term ∫0c⁢tdr⁢1r⁢M⁢[šÆ0āˆ’3⁢(šÆ0ā‹…š§)ā¢š§]⁢(š±,r)superscriptsubscript0š‘š‘”differential-dš‘Ÿ1š‘Ÿš‘€delimited-[]subscriptšÆ03ā‹…subscriptšÆ0š§š§š±š‘Ÿ\int_{0}^{ct}\mathrm{d}r\frac{1}{r}M\left[\mathbf{v}_{0}-3(\mathbf{v}_{0}\cdot% \mathbf{n})\mathbf{n}\right](\mathbf{x},r)∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_c italic_t end_POSTSUPERSCRIPT roman_d italic_r divide start_ARG 1 end_ARG start_ARG italic_r end_ARG italic_M [ bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT - 3 ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… bold_n ) bold_n ] ( bold_x , italic_r ) is finite and in this case one can ignore the contribution from the case aāˆ’k+bāˆ’ā„“=0š‘Žš‘˜š‘ā„“0a-k+b-\ell=0italic_a - italic_k + italic_b - roman_ā„“ = 0. In general, in particular for discontinuous data, a (logarithmic) singularity is part of the solution (see [BK22]). Thus,

šÆW⁢(t,š±)superscriptšÆš‘Šš‘”š±\displaystyle\mathbf{v}^{W}(t,\mathbf{x})bold_v start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , bold_x ) =23⁢(xa⁢yb0)absent23superscriptš‘„š‘Žsuperscriptš‘¦š‘0\displaystyle=\frac{2}{3}\left(\begin{array}[]{c}x^{a}y^{b}\\ 0\\ \end{array}\right)= divide start_ARG 2 end_ARG start_ARG 3 end_ARG ( start_ARRAY start_ROW start_CELL italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL 0 end_CELL end_ROW end_ARRAY ) (38)
+12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢(c⁢t)aāˆ’k+bāˆ’ā„“12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘š‘”š‘Žš‘˜š‘ā„“\displaystyle+\frac{1}{2\Delta\varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k% }{b\choose\ell}x^{k}y^{\ell}(ct)^{a-k+b-\ell}+ divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT
Ɨ[(aāˆ’k+bāˆ’ā„“+1)(μaāˆ’k+2,bāˆ’ā„“Wμaāˆ’k+1,bāˆ’ā„“+1W)Ī·aāˆ’k+bāˆ’ā„“+3\displaystyle\phantom{mmm}\times\left[(a-k+b-\ell+1)\left(\begin{array}[]{c}% \mu_{a-k+2,b-\ell}^{W}\\ \mu_{a-k+1,b-\ell+1}^{W}\\ \end{array}\right)\eta_{a-k+b-\ell+3}\right.Ɨ [ ( italic_a - italic_k + italic_b - roman_ā„“ + 1 ) ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 2 , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW end_ARRAY ) italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT (41)
āˆ’(μaāˆ’k,bāˆ’ā„“W⁢ηaāˆ’k+bāˆ’ā„“+1āˆ’3⁢μaāˆ’k+2,bāˆ’ā„“W⁢ηaāˆ’k+bāˆ’ā„“+3āˆ’3⁢μaāˆ’k+1,bāˆ’ā„“+1W⁢ηaāˆ’k+bāˆ’ā„“+3)(1+1aāˆ’k+bāˆ’ā„“)]\displaystyle\phantom{mmmmm}\left.-\left(\begin{array}[]{c}\mu_{a-k,b-\ell}^{W% }\eta_{a-k+b-\ell+1}-3\mu_{a-k+2,b-\ell}^{W}\eta_{a-k+b-\ell+3}\\ -3\mu_{a-k+1,b-\ell+1}^{W}\eta_{a-k+b-\ell+3}\\ \end{array}\right)\left(1+\frac{1}{a-k+b-\ell}\right)\right]- ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT - 3 italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 2 , italic_b - roman_ā„“ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL - 3 italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT end_CELL end_ROW end_ARRAY ) ( 1 + divide start_ARG 1 end_ARG start_ARG italic_a - italic_k + italic_b - roman_ā„“ end_ARG ) ] (44)

where it is understood that the fraction in the last term is only to be inculded if it is defined.

If š±=0š±0\mathbf{x}=0bold_x = 0, the expression simplifies:

šÆW⁢(t,0)superscriptšÆš‘Šš‘”0\displaystyle\mathbf{v}^{W}(t,0)bold_v start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ( italic_t , 0 ) =23⁢(xa⁢yb0)+12⁢Δ⁢φ⁢(c⁢t)a+babsent23superscriptš‘„š‘Žsuperscriptš‘¦š‘012Ī”šœ‘superscriptš‘š‘”š‘Žš‘\displaystyle=\frac{2}{3}\left(\begin{array}[]{c}x^{a}y^{b}\\ 0\\ \end{array}\right)+\frac{1}{2\Delta\varphi}(ct)^{a+b}= divide start_ARG 2 end_ARG start_ARG 3 end_ARG ( start_ARRAY start_ROW start_CELL italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL 0 end_CELL end_ROW end_ARRAY ) + divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG ( italic_c italic_t ) start_POSTSUPERSCRIPT italic_a + italic_b end_POSTSUPERSCRIPT (47)
Ɨ[(a+b+1)⁢(μa+2,bWμa+1,b+1W)⁢ηa+b+3āˆ’(μa,bW⁢ηa+b+1āˆ’3⁢μa+2,bW⁢ηa+b+3āˆ’3⁢μa+1,b+1W⁢ηa+b+3)⁢(1+1a+b)]absentdelimited-[]š‘Žš‘1superscriptsubscriptšœ‡š‘Ž2š‘š‘Šsuperscriptsubscriptšœ‡š‘Ž1š‘1š‘Šsubscriptšœ‚š‘Žš‘3superscriptsubscriptšœ‡š‘Žš‘š‘Šsubscriptšœ‚š‘Žš‘13superscriptsubscriptšœ‡š‘Ž2š‘š‘Šsubscriptšœ‚š‘Žš‘33superscriptsubscriptšœ‡š‘Ž1š‘1š‘Šsubscriptšœ‚š‘Žš‘311š‘Žš‘\displaystyle\times\left[(a+b+1)\left(\begin{array}[]{c}\mu_{a+2,b}^{W}\\ \mu_{a+1,b+1}^{W}\\ \end{array}\right)\eta_{a+b+3}-\left(\begin{array}[]{c}\mu_{a,b}^{W}\eta_{a+b+% 1}-3\mu_{a+2,b}^{W}\eta_{a+b+3}\\ -3\mu_{a+1,b+1}^{W}\eta_{a+b+3}\\ \end{array}\right)\left(1+\frac{1}{a+b}\right)\right]Ɨ [ ( italic_a + italic_b + 1 ) ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a + 2 , italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a + 1 , italic_b + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT end_CELL end_ROW end_ARRAY ) italic_Ī· start_POSTSUBSCRIPT italic_a + italic_b + 3 end_POSTSUBSCRIPT - ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a , italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a + italic_b + 1 end_POSTSUBSCRIPT - 3 italic_μ start_POSTSUBSCRIPT italic_a + 2 , italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a + italic_b + 3 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL - 3 italic_μ start_POSTSUBSCRIPT italic_a + 1 , italic_b + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT italic_Ī· start_POSTSUBSCRIPT italic_a + italic_b + 3 end_POSTSUBSCRIPT end_CELL end_ROW end_ARRAY ) ( 1 + divide start_ARG 1 end_ARG start_ARG italic_a + italic_b end_ARG ) ] (52)

where, again, the last fraction is only included if it is defined.

3 An Active Flux method for the Euler equations

3.1 General remarks

On a Cartesian grid with cells

Ci⁢j=[xiāˆ’12,xi+12]Ɨ[yjāˆ’12,yj+12]subscriptš¶š‘–š‘—subscriptš‘„š‘–12subscriptš‘„š‘–12subscriptš‘¦š‘—12subscriptš‘¦š‘—12\displaystyle C_{ij}=\left[x_{i-\frac{1}{2}},x_{i+\frac{1}{2}}\right]\times% \left[y_{j-\frac{1}{2}},y_{j+\frac{1}{2}}\right]italic_C start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT = [ italic_x start_POSTSUBSCRIPT italic_i - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ] Ɨ [ italic_y start_POSTSUBSCRIPT italic_j - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ] (53)

the degrees of freedom of Active Flux are (see also Figure 1) cell averages

qĀÆi⁢j⁢(t)ā‰ƒ1|Ci⁢j|⁢∫Ci⁢jdš±ā¢q⁢(t,š±)similar-to-or-equalssubscriptĀÆš‘žš‘–š‘—š‘”1subscriptš¶š‘–š‘—subscriptsubscriptš¶š‘–š‘—differential-dš±š‘žš‘”š±\displaystyle\bar{q}_{ij}(t)\simeq\frac{1}{|C_{ij}|}\int_{C_{ij}}\mathrm{d}% \mathbf{x}\,q(t,\mathbf{x})overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ( italic_t ) ā‰ƒ divide start_ARG 1 end_ARG start_ARG | italic_C start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT | end_ARG ∫ start_POSTSUBSCRIPT italic_C start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT roman_d bold_x italic_q ( italic_t , bold_x ) (54)

and point values at nodes

qi+12,j+12⁢(t)ā‰ƒq⁢(t,xi+12,yj+12)similar-to-or-equalssubscriptš‘žš‘–12š‘—12š‘”š‘žš‘”subscriptš‘„š‘–12subscriptš‘¦š‘—12\displaystyle q_{i+\frac{1}{2},j+\frac{1}{2}}(t)\simeq q(t,x_{i+\frac{1}{2}},y% _{j+\frac{1}{2}})italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ( italic_t ) ā‰ƒ italic_q ( italic_t , italic_x start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) (55)

and at edge midpoints

qi+12,j⁢(t)subscriptš‘žš‘–12š‘—š‘”\displaystyle q_{i+\frac{1}{2},j}(t)italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ( italic_t ) ā‰ƒq⁢(t,xi+12,yj)similar-to-or-equalsabsentš‘žš‘”subscriptš‘„š‘–12subscriptš‘¦š‘—\displaystyle\simeq q(t,x_{i+\frac{1}{2}},y_{j})ā‰ƒ italic_q ( italic_t , italic_x start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) qi,j+12⁢(t)subscriptš‘žš‘–š‘—12š‘”\displaystyle q_{i,j+\frac{1}{2}}(t)italic_q start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ( italic_t ) ā‰ƒq⁢(t,xi,yj+12)similar-to-or-equalsabsentš‘žš‘”subscriptš‘„š‘–subscriptš‘¦š‘—12\displaystyle\simeq q(t,x_{i},y_{j+\frac{1}{2}})ā‰ƒ italic_q ( italic_t , italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) (56)
Refer to caption
Figure 1: Degrees of freedom of Active Flux: Averages and point value at nodes and edge midpoints.

Time is discretized at instants tnsuperscriptš‘”š‘›t^{n}italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT, nāˆˆā„•0š‘›subscriptā„•0n\in\mathbb{N}_{0}italic_n ∈ roman_ā„• start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, with Δ⁢tĪ”š‘”\Delta troman_Ī” italic_t a generic name for the difference tn+1āˆ’tnsuperscriptš‘”š‘›1superscriptš‘”š‘›t^{n+1}-t^{n}italic_t start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT - italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT. The values of the degrees of freedom at instant tnsuperscriptš‘”š‘›t^{n}italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT are denoted by a superscript nš‘›nitalic_n.

A reconstruction in each cell serves as initial data for the evolution operator. The classical reconstruction in Active Flux agrees pointwise with the given point values, and its average equals the given cell average. With 9 conditions, a biparabolic reconstruction in

span⁢(1,x,x2,y,x⁢y,x⁢y2,y2⁢x⁢y2,y2⁢y2)span1š‘„superscriptš‘„2š‘¦š‘„š‘¦š‘„superscriptš‘¦2superscriptš‘¦2š‘„superscriptš‘¦2superscriptš‘¦2superscriptš‘¦2\displaystyle\mathrm{span}(1,x,x^{2},y,xy,xy^{2},y^{2}xy^{2},y^{2}y^{2})roman_span ( 1 , italic_x , italic_x start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT , italic_y , italic_x italic_y , italic_x italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT , italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_x italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT , italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) (57)

is natural (as used in [BHKR19, HKS19], where the polynomial is given explicitly). Since the restriction of a biparabolic function on one of the (axis-aligned) edges is a parabola, and since it is uniquely determined by the three values present along each edge, the reconstructions form globally continuous initial data. As is described later, a biparabolic reconstruction is still used here, but computed slightly differently.

3.2 Update of the average

Recall that the update of the average qĀÆi⁢j:=1|Ci⁢j|⁢∫dš±ā¢q⁢(t,š±)assignsubscriptĀÆš‘žš‘–š‘—1subscriptš¶š‘–š‘—differential-dš±š‘žš‘”š±\bar{q}_{ij}:=\frac{1}{|C_{ij}|}\int\mathrm{d}\mathbf{x}\,q(t,\mathbf{x})overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT := divide start_ARG 1 end_ARG start_ARG | italic_C start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT | end_ARG ∫ roman_d bold_x italic_q ( italic_t , bold_x ) is obtained immediately by integrating the conservation law

āˆ‚tq+āˆ‡ā‹…šŸā¢(q)subscriptš‘”š‘žā‹…āˆ‡šŸš‘ž\displaystyle\partial_{t}q+\nabla\cdot\mathbf{f}(q)āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_q + āˆ‡ ā‹… bold_f ( italic_q ) =0absent0\displaystyle=0= 0 qš‘ž\displaystyle qitalic_q :ā„0+Ć—ā„2ā†’ā„m:absent→subscriptsuperscriptā„0superscriptā„2superscriptā„š‘š\displaystyle\colon\mathbb{R}^{+}_{0}\times\mathbb{R}^{2}\to\mathbb{R}^{m}: roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT → roman_ā„ start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT (58)
šŸšŸ\displaystyle\mathbf{f}bold_f =(fx,fy)fx,fy:ā„mā†’ā„m:absentsuperscriptš‘“š‘„superscriptš‘“š‘¦superscriptš‘“š‘„superscriptš‘“š‘¦ā†’superscriptā„š‘šsuperscriptā„š‘š\displaystyle=(f^{x},f^{y})\quad f^{x},f^{y}\colon\mathbb{R}^{m}\to\mathbb{R}^% {m}= ( italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT , italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ) italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT , italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT : roman_ā„ start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT → roman_ā„ start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT (59)

over the cell Ci⁢jsubscriptš¶š‘–š‘—C_{ij}italic_C start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT and over the time step [tn,tn+1]superscriptš‘”š‘›superscriptš‘”š‘›1[t^{n},t^{n+1}][ italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT , italic_t start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT ] and replacing the integrals by space-time Simpson-rule quadratures (see e.g. [ER13]):

qĀÆi⁢jn+1āˆ’qĀÆi⁢jnΔ⁢tsuperscriptsubscriptĀÆš‘žš‘–š‘—š‘›1superscriptsubscriptĀÆš‘žš‘–š‘—š‘›Ī”š‘”\displaystyle\frac{\bar{q}_{ij}^{n+1}-\bar{q}_{ij}^{n}}{\Delta t}divide start_ARG overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT - overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT end_ARG start_ARG roman_Ī” italic_t end_ARG =āˆ’1Δ⁢x⁢(f^i+12,jxāˆ’f^iāˆ’12,jx)āˆ’1Δ⁢y⁢(f^i,j+12yāˆ’f^i,jāˆ’12y)ā‰ƒāˆ’āˆ«āˆ‚Ci⁢jdš±ā¢š§ā‹…šŸā¢(q)absent1Ī”š‘„subscriptsuperscript^š‘“š‘„š‘–12š‘—subscriptsuperscript^š‘“š‘„š‘–12š‘—1Ī”š‘¦subscriptsuperscript^š‘“š‘¦š‘–š‘—12subscriptsuperscript^š‘“š‘¦š‘–š‘—12similar-to-or-equalssubscriptsubscriptš¶š‘–š‘—ā‹…differential-dš±š§šŸš‘ž\displaystyle=-\frac{1}{\Delta x}\left(\hat{f}^{x}_{i+\frac{1}{2},j}-\hat{f}^{% x}_{i-\frac{1}{2},j}\right)-\frac{1}{\Delta y}\left(\hat{f}^{y}_{i,j+\frac{1}{% 2}}-\hat{f}^{y}_{i,j-\frac{1}{2}}\right)\simeq-\int_{\partial C_{ij}}\mathrm{d% }\mathbf{x}\,\mathbf{n}\cdot\mathbf{f}(q)= - divide start_ARG 1 end_ARG start_ARG roman_Ī” italic_x end_ARG ( over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT - over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i - divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) - divide start_ARG 1 end_ARG start_ARG roman_Ī” italic_y end_ARG ( over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT - over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) ā‰ƒ - ∫ start_POSTSUBSCRIPT āˆ‚ italic_C start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT roman_d bold_x bold_n ā‹… bold_f ( italic_q ) (60)

with

f^i+12,jxsubscriptsuperscript^š‘“š‘„š‘–12š‘—\displaystyle\hat{f}^{x}_{i+\frac{1}{2},j}over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT :=16⁢(fx⁢(qi+12,jāˆ’12n)6+2⁢fx⁢(qi+12,jn)3+fx⁢(qi+12,j+12n)6)assignabsent16superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›š‘–12š‘—1262superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›š‘–12š‘—3superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›š‘–12š‘—126\displaystyle:=\frac{1}{6}\left(\frac{f^{x}(q^{n}_{i+\frac{1}{2},j-\frac{1}{2}% })}{6}+\frac{2f^{x}(q^{n}_{i+\frac{1}{2},j})}{3}+\frac{f^{x}(q^{n}_{i+\frac{1}% {2},j+\frac{1}{2}})}{6}\right):= divide start_ARG 1 end_ARG start_ARG 6 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG + divide start_ARG 2 italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) end_ARG start_ARG 3 end_ARG + divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG ) (61)
+23⁢(fx⁢(qi+12,jāˆ’12n+12)6+2⁢fx⁢(qi+12,jn+12)3+fx⁢(qi+12,j+12n+12)6)+16⁢(fx⁢(qi+12,jāˆ’12n+1)6+2⁢fx⁢(qi+12,jn+1)3+fx⁢(qi+12,j+12n+1)6)23superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›12š‘–12š‘—1262superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›12š‘–12š‘—3superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›12š‘–12š‘—12616superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›1š‘–12š‘—1262superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›1š‘–12š‘—3superscriptš‘“š‘„subscriptsuperscriptš‘žš‘›1š‘–12š‘—126\displaystyle\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!+\frac{2}{3}\left(\frac{f^{x}(q^{% n+\frac{1}{2}}_{i+\frac{1}{2},j-\frac{1}{2}})}{6}+\frac{2f^{x}(q^{n+\frac{1}{2% }}_{i+\frac{1}{2},j})}{3}+\frac{f^{x}(q^{n+\frac{1}{2}}_{i+\frac{1}{2},j+\frac% {1}{2}})}{6}\right)+\frac{1}{6}\left(\frac{f^{x}(q^{n+1}_{i+\frac{1}{2},j-% \frac{1}{2}})}{6}+\frac{2f^{x}(q^{n+1}_{i+\frac{1}{2},j})}{3}+\frac{f^{x}(q^{n% +1}_{i+\frac{1}{2},j+\frac{1}{2}})}{6}\right)+ divide start_ARG 2 end_ARG start_ARG 3 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG + divide start_ARG 2 italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) end_ARG start_ARG 3 end_ARG + divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG ) + divide start_ARG 1 end_ARG start_ARG 6 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG + divide start_ARG 2 italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) end_ARG start_ARG 3 end_ARG + divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG )
ā‰ƒ1Δ⁢y⁢∫yjāˆ’12yj+12dy⁢1Δ⁢t⁢∫tntn+1dt⁢fx⁢(q⁢(xi+12,y,t))similar-to-or-equalsabsent1Ī”š‘¦superscriptsubscriptsubscriptš‘¦š‘—12subscriptš‘¦š‘—12differential-dš‘¦1Ī”š‘”superscriptsubscriptsuperscriptš‘”š‘›superscriptš‘”š‘›1differential-dš‘”superscriptš‘“š‘„š‘žsubscriptš‘„š‘–12š‘¦š‘”\displaystyle\simeq\frac{1}{\Delta y}\int_{y_{j-\frac{1}{2}}}^{y_{j+\frac{1}{2% }}}\mathrm{d}y\frac{1}{\Delta t}\int_{t^{n}}^{t^{n+1}}\mathrm{d}t\,f^{x}(q(x_{% i+\frac{1}{2}},y,t))ā‰ƒ divide start_ARG 1 end_ARG start_ARG roman_Ī” italic_y end_ARG ∫ start_POSTSUBSCRIPT italic_y start_POSTSUBSCRIPT italic_j - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_y start_POSTSUBSCRIPT italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_y divide start_ARG 1 end_ARG start_ARG roman_Ī” italic_t end_ARG ∫ start_POSTSUBSCRIPT italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_t start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT end_POSTSUPERSCRIPT roman_d italic_t italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q ( italic_x start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT , italic_y , italic_t ) ) (62)
f^i,j+12ysubscriptsuperscript^š‘“š‘¦š‘–š‘—12\displaystyle\hat{f}^{y}_{i,j+\frac{1}{2}}over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT :=16⁢(fy⁢(qiāˆ’12,j+12n)6+2⁢fy⁢(qi,j+12n)3+fy⁢(qi+12,j+12n)6)assignabsent16superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›š‘–12š‘—1262superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›š‘–š‘—123superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›š‘–12š‘—126\displaystyle:=\frac{1}{6}\left(\frac{f^{y}(q^{n}_{i-\frac{1}{2},j+\frac{1}{2}% })}{6}+\frac{2f^{y}(q^{n}_{i,j+\frac{1}{2}})}{3}+\frac{f^{y}(q^{n}_{i+\frac{1}% {2},j+\frac{1}{2}})}{6}\right):= divide start_ARG 1 end_ARG start_ARG 6 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i - divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG + divide start_ARG 2 italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 3 end_ARG + divide start_ARG italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG ) (63)
+23⁢(fy⁢(qiāˆ’12,j+12n+12)6+2⁢fy⁢(qi,j+12n+12)3+fy⁢(qi+12,j+12n+12)6)+16⁢(fy⁢(qiāˆ’12,j+12n+1)6+2⁢fy⁢(qi,j+12n+1)3+fy⁢(qi+12,j+12n+1)6)23superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›12š‘–12š‘—1262superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›12š‘–š‘—123superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›12š‘–12š‘—12616superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›1š‘–12š‘—1262superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›1š‘–š‘—123superscriptš‘“š‘¦subscriptsuperscriptš‘žš‘›1š‘–12š‘—126\displaystyle\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!+\frac{2}{3}\left(\frac{f^{y}(q^{% n+\frac{1}{2}}_{i-\frac{1}{2},j+\frac{1}{2}})}{6}+\frac{2f^{y}(q^{n+\frac{1}{2% }}_{i,j+\frac{1}{2}})}{3}+\frac{f^{y}(q^{n+\frac{1}{2}}_{i+\frac{1}{2},j+\frac% {1}{2}})}{6}\right)+\frac{1}{6}\left(\frac{f^{y}(q^{n+1}_{i-\frac{1}{2},j+% \frac{1}{2}})}{6}+\frac{2f^{y}(q^{n+1}_{i,j+\frac{1}{2}})}{3}+\frac{f^{y}(q^{n% +1}_{i+\frac{1}{2},j+\frac{1}{2}})}{6}\right)+ divide start_ARG 2 end_ARG start_ARG 3 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i - divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG + divide start_ARG 2 italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 3 end_ARG + divide start_ARG italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG ) + divide start_ARG 1 end_ARG start_ARG 6 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i - divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG + divide start_ARG 2 italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 3 end_ARG + divide start_ARG italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 6 end_ARG )
ā‰ƒ1Δ⁢x⁢∫xiāˆ’12xi+12dx⁢1Δ⁢t⁢∫tntn+1dt⁢fy⁢(q⁢(x,yj+12,t))similar-to-or-equalsabsent1Ī”š‘„superscriptsubscriptsubscriptš‘„š‘–12subscriptš‘„š‘–12differential-dš‘„1Ī”š‘”superscriptsubscriptsuperscriptš‘”š‘›superscriptš‘”š‘›1differential-dš‘”superscriptš‘“š‘¦š‘žš‘„subscriptš‘¦š‘—12š‘”\displaystyle\simeq\frac{1}{\Delta x}\int_{x_{i-\frac{1}{2}}}^{x_{i+\frac{1}{2% }}}\mathrm{d}x\frac{1}{\Delta t}\int_{t^{n}}^{t^{n+1}}\mathrm{d}t\,f^{y}(q(x,y% _{j+\frac{1}{2}},t))ā‰ƒ divide start_ARG 1 end_ARG start_ARG roman_Ī” italic_x end_ARG ∫ start_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT italic_i - divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_x divide start_ARG 1 end_ARG start_ARG roman_Ī” italic_t end_ARG ∫ start_POSTSUBSCRIPT italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_t start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT end_POSTSUPERSCRIPT roman_d italic_t italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q ( italic_x , italic_y start_POSTSUBSCRIPT italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT , italic_t ) ) (64)

Since this step requires the new point values at tn+Δ⁢t2superscriptš‘”š‘›Ī”š‘”2t^{n}+\frac{\Delta t}{2}italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT + divide start_ARG roman_Ī” italic_t end_ARG start_ARG 2 end_ARG and tn+1=tn+Δ⁢tsuperscriptš‘”š‘›1superscriptš‘”š‘›Ī”š‘”t^{n+1}=t^{n}+\Delta titalic_t start_POSTSUPERSCRIPT italic_n + 1 end_POSTSUPERSCRIPT = italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT + roman_Ī” italic_t, it is performed as the very last.

3.3 Update of the point values

Recall the Euler equations in primitive variables

āˆ‚tρ+šÆā‹…āˆ‡Ļ+Ļā¢āˆ‡ā‹…šÆsubscriptš‘”šœŒā‹…šÆāˆ‡šœŒā‹…šœŒāˆ‡šÆ\displaystyle\partial_{t}\rho+\mathbf{v}\cdot\nabla\rho+\rho\nabla\cdot\mathbf% {v}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_ρ + bold_v ā‹… āˆ‡ italic_ρ + italic_ρ āˆ‡ ā‹… bold_v =0absent0\displaystyle=0= 0 (65)
āˆ‚tšÆ+(šÆā‹…āˆ‡)ā¢šÆ+āˆ‡pρsubscriptš‘”šÆā‹…šÆāˆ‡šÆāˆ‡š‘šœŒ\displaystyle\partial_{t}\mathbf{v}+(\mathbf{v}\cdot\nabla)\mathbf{v}+\frac{% \nabla p}{\rho}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT bold_v + ( bold_v ā‹… āˆ‡ ) bold_v + divide start_ARG āˆ‡ italic_p end_ARG start_ARG italic_ρ end_ARG =0absent0\displaystyle=0= 0 (66)
āˆ‚tp+šÆā‹…āˆ‡p+ρ⁢c2ā¢āˆ‡ā‹…šÆsubscriptš‘”š‘ā‹…šÆāˆ‡š‘ā‹…šœŒsuperscriptš‘2āˆ‡šÆ\displaystyle\partial_{t}p+\mathbf{v}\cdot\nabla p+\rho c^{2}\nabla\cdot% \mathbf{v}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_p + bold_v ā‹… āˆ‡ italic_p + italic_ρ italic_c start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT āˆ‡ ā‹… bold_v =0absent0\displaystyle=0= 0 (67)

Contrary to e.g. [ABK25] here the following special choices are made:

  1. 1.

    The first ingredient of the presented approach is the usage of primitive variables for the point values.

  2. 2.

    The second is a reconstruction in primitive variables. For point values, the transformation between conserved and primitive variables is immediate. Therefore, here, after transforming the point values to conserved variables, and given the average over the cell (in conserved variables, too), a two-dimensional Simpson rule is inverted to find the value at cell center (in conserved variables). This latter is finally transformed to primitive variables and a biparabolic reconstruction is computed.

  3. 3.

    An operator splitting is employed, by first solving

    āˆ‚tρ+Ļā¢āˆ‡ā‹…šÆsubscriptš‘”šœŒā‹…šœŒāˆ‡šÆ\displaystyle\partial_{t}\rho+\rho\nabla\cdot\mathbf{v}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_ρ + italic_ρ āˆ‡ ā‹… bold_v =0absent0\displaystyle=0= 0 (68)
    āˆ‚tšÆ+āˆ‡pρsubscriptš‘”šÆāˆ‡š‘šœŒ\displaystyle\partial_{t}\mathbf{v}+\frac{\nabla p}{\rho}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT bold_v + divide start_ARG āˆ‡ italic_p end_ARG start_ARG italic_ρ end_ARG =0absent0\displaystyle=0= 0 (69)
    āˆ‚tp+ρ⁢c2ā¢āˆ‡ā‹…šÆsubscriptš‘”š‘ā‹…šœŒsuperscriptš‘2āˆ‡šÆ\displaystyle\partial_{t}p+\rho c^{2}\nabla\cdot\mathbf{v}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_p + italic_ρ italic_c start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT āˆ‡ ā‹… bold_v =0absent0\displaystyle=0= 0 (70)

    in a locally linearized manner, i.e. actually solving

    āˆ‚tšÆ+c0ā¢āˆ‡(pρ0⁢c0)subscriptš‘”šÆsubscriptš‘0āˆ‡š‘subscriptšœŒ0subscriptš‘0\displaystyle\partial_{t}\mathbf{v}+c_{0}\nabla\left(\frac{p}{\rho_{0}c_{0}}\right)āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT bold_v + italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT āˆ‡ ( divide start_ARG italic_p end_ARG start_ARG italic_ρ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG ) =0absent0\displaystyle=0= 0 (71)
    āˆ‚t(pρ0⁢c0)+c0ā¢āˆ‡ā‹…šÆsubscriptš‘”š‘subscriptšœŒ0subscriptš‘0ā‹…subscriptš‘0āˆ‡šÆ\displaystyle\partial_{t}\left(\frac{p}{\rho_{0}c_{0}}\right)+c_{0}\nabla\cdot% \mathbf{v}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ( divide start_ARG italic_p end_ARG start_ARG italic_ρ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG ) + italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT āˆ‡ ā‹… bold_v =0absent0\displaystyle=0= 0 (72)

    with c0subscriptš‘0c_{0}italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, ρ0subscriptšœŒ0\rho_{0}italic_ρ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT evaluations of the speed of sound and of the density at the location of the respective point value, and obtaining the density from

    āˆ‚t(ρ⁢c02āˆ’p)subscriptš‘”šœŒsuperscriptsubscriptš‘02š‘\displaystyle\partial_{t}(\rho c_{0}^{2}-p)āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ( italic_ρ italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT - italic_p ) =0absent0\displaystyle=0= 0 (73)

    To solve (71)–(72), the exact evolution operator for linear acoustics is used, as described in Section 2. The biparabolic reconstruction (involving values at time tnsuperscriptš‘”š‘›t^{n}italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT) serves as the initial datum.

    In a second step,

    āˆ‚tρ+šÆā‹…āˆ‡Ļsubscriptš‘”šœŒā‹…šÆāˆ‡šœŒ\displaystyle\partial_{t}\rho+\mathbf{v}\cdot\nabla\rhoāˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_ρ + bold_v ā‹… āˆ‡ italic_ρ =0absent0\displaystyle=0= 0 (74)
    āˆ‚tšÆ+(šÆā‹…āˆ‡)ā¢šÆsubscriptš‘”šÆā‹…šÆāˆ‡šÆ\displaystyle\partial_{t}\mathbf{v}+(\mathbf{v}\cdot\nabla)\mathbf{v}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT bold_v + ( bold_v ā‹… āˆ‡ ) bold_v =0absent0\displaystyle=0= 0 (75)
    āˆ‚tp+šÆā‹…āˆ‡psubscriptš‘”š‘ā‹…šÆāˆ‡š‘\displaystyle\partial_{t}p+\mathbf{v}\cdot\nabla pāˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_p + bold_v ā‹… āˆ‡ italic_p =0absent0\displaystyle=0= 0 (76)

    is solved. Local linearization would amount to evolving the data according to

    š±ā†¦š±āˆ’šÆ0⁢tmaps-toš±š±subscriptšÆ0š‘”\displaystyle\mathbf{x}\mapsto\mathbf{x}-\mathbf{v}_{0}tbold_x ↦ bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_t (77)

    with, again, šÆ0subscriptšÆ0\mathbf{v}_{0}bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT the evaluation of the velocity at the location of the respective point value. Here instead, a fully third-order algorithm is used to solve (74)–(76), which is discussed in Section 3.4. The same biparabolic reconstruction (involving values at time tnsuperscriptš‘”š‘›t^{n}italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT) serves as the initial datum.

  4. 4.

    The two operators are combined in additive operator splitting.

Remark 3.1.

Define solution operators S1,S2:ā„MƗ[0,T]ā†’ā„M:subscriptš‘†1subscriptš‘†2→superscriptā„š‘€0š‘‡superscriptā„š‘€S_{1},S_{2}\colon\mathbb{R}^{M}\times[0,T]\to\mathbb{R}^{M}italic_S start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_S start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT : roman_ā„ start_POSTSUPERSCRIPT italic_M end_POSTSUPERSCRIPT Ɨ [ 0 , italic_T ] → roman_ā„ start_POSTSUPERSCRIPT italic_M end_POSTSUPERSCRIPT, such that Sk⁢(q0,t)subscriptš‘†š‘˜subscriptš‘ž0š‘”S_{k}(q_{0},t)italic_S start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_t ), k=1,2š‘˜12k=1,2italic_k = 1 , 2 is the solution at time tš‘”titalic_t of IVPksubscriptIVPš‘˜\text{IVP}_{k}IVP start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT (obtained by splitting some IVP into two operators) with initial data q0āˆˆā„Msubscriptš‘ž0superscriptā„š‘€q_{0}\in\mathbb{R}^{M}italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ∈ roman_ā„ start_POSTSUPERSCRIPT italic_M end_POSTSUPERSCRIPT. Then, recall that multiplicative operator splitting is

S2⁢(S1⁢(q0,t),t)subscriptš‘†2subscriptš‘†1subscriptš‘ž0š‘”š‘”\displaystyle S_{2}(S_{1}(q_{0},t),t)italic_S start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_S start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_t ) , italic_t ) (78)

while

S2⁢(q0,t)+S1⁢(q0,t)āˆ’q0subscriptš‘†2subscriptš‘ž0š‘”subscriptš‘†1subscriptš‘ž0š‘”subscriptš‘ž0\displaystyle S_{2}(q_{0},t)+S_{1}(q_{0},t)-q_{0}italic_S start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_t ) + italic_S start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_t ) - italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT (79)

is additive operator splitting. Multiplicative operator splitting would require the solution of the first sub-operator to serve as initial data of the second. However, it is not possible to update the average individually with any of the two sub-operators that are considered here, since the presented splitting into acoustics and advection yields non-conservative sub-operators. Additive operator splitting can be applied to the same initial data and allows to circumvent this difficulty. The update of the average then happens using the unsplit equations.

Remark 3.2.

The cell average is evolved in conserved variables by evaluating the flux

šŸā¢(qprim)=(Ļā¢šÆĻā¢šÆāŠ—šÆ+pā¢šŸ™šÆā¢(γ⁢pĪ³āˆ’1+12⁢ρ⁢|šÆ|2))šŸsubscriptš‘žprimšœŒšÆtensor-productšœŒšÆšÆš‘double-struck-šŸ™šÆš›¾š‘š›¾112šœŒsuperscriptšÆ2\mathbf{f}(q_{\text{prim}})=\left(\begin{array}[]{c}\rho\mathbf{v}\\ \rho\mathbf{v}\otimes\mathbf{v}+p\mathbb{1}\\ \mathbf{v}\left(\frac{\gamma p}{\gamma-1}+\frac{1}{2}\rho|\mathbf{v}|^{2}% \right)\\ \end{array}\right)bold_f ( italic_q start_POSTSUBSCRIPT prim end_POSTSUBSCRIPT ) = ( start_ARRAY start_ROW start_CELL italic_ρ bold_v end_CELL end_ROW start_ROW start_CELL italic_ρ bold_v āŠ— bold_v + italic_p blackboard_šŸ™ end_CELL end_ROW start_ROW start_CELL bold_v ( divide start_ARG italic_γ italic_p end_ARG start_ARG italic_γ - 1 end_ARG + divide start_ARG 1 end_ARG start_ARG 2 end_ARG italic_ρ | bold_v | start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) end_CELL end_ROW end_ARRAY )

using the primitive variables (ρ,šÆ,p)šœŒšÆš‘(\rho,\mathbf{v},p)( italic_ρ , bold_v , italic_p ) stored at the point values. The method thus is conservative.

Remark 3.3.

The transformation of the point values back and forth between primitive and conserved variables does not entail a big cost. Using primitive variables for the reconstruction is a common approach for Finite Volume methods. More importantly, this extra effort is accepted here for the greater advantage of a significantly simpler usage of the acoustic evolution operator. In principle, however, it seems possible to perform essentially the same algorithm in conserved variables alone.

Due to the usage of the exact evolution operator for acoustics, the linearization of the present scheme amounts to a combination of advection and acoustics, the stability of which has been analyzed in [CHK21]. The shortest separation between two degrees of freedom is min⁢(Δ⁢x,Δ⁢y)/2minĪ”š‘„Ī”š‘¦2\mathrm{min}(\Delta x,\Delta y)/2roman_min ( roman_Ī” italic_x , roman_Ī” italic_y ) / 2. The method thus has a maximal CFL number of 0.5.

3.4 Order of accuracy

3.4.1 Overview

It has been shown in [Bar21a] that local linearization (i.e. the evaluation of the Jacobians of the sub-operators (71)–(72), (74)–(76) at the point value that one seeks to update) leads to a second-order accurate method only. In the same work it has been shown that fixpoint iteration on the characteristic equation leads to high-order results for scalar conservation laws. This is because even if they are nonlinear, characteristics remain straight lines. This is no longer true for systems, and [Bar21a] showed that a naive fixpoint iteration does not improve the order beyond second.

For systems, the characteristics are curved since their speed depends on all characteristic variables222Riemann invariants are sometimes mistaken for characteristic variables. Riemann invariants have the same value across a simple wave (e.g. contact discontinuity or rarefaction) and they exist for e.g. the Euler equations. Characteristic variables Qš‘„Qitalic_Q are those for which the hyperbolic system can be written in the form āˆ‚tQk+Ī»k⁢(Q1,…,QN)ā¢āˆ‚xQk=0subscriptš‘”subscriptš‘„š‘˜subscriptšœ†š‘˜subscriptš‘„1…subscriptš‘„š‘subscriptš‘„subscriptš‘„š‘˜0\partial_{t}Q_{k}+\lambda_{k}(Q_{1},\ldots,Q_{N})\partial_{x}Q_{k}=0āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_Q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_Ī» start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_Q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , … , italic_Q start_POSTSUBSCRIPT italic_N end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_Q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = 0. If they exist, they remain constant on ā€œtheirā€ characteristic, which is a stronger statement not restricted to simple waves, but holding true everywhere in the region of smoothness of the solution. However, they exist only if an integrability condition is verified (the matrix āˆ‚Q/āˆ‚qš‘„š‘ž\partial Q/\partial qāˆ‚ italic_Q / āˆ‚ italic_q needs to be commuted with the derivative āˆ‚xsubscriptš‘„\partial_{x}āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT). For linear systems, this integrability condition is void, and hence generically across a kš‘˜kitalic_k-wave all characteristic variables but the kš‘˜kitalic_k-th are Riemann invariants. This is also the case for nonlinear problems if the integrability condition is true (any 2Ɨ2222\times 22 Ɨ 2 system, for example, which includes shallow water and isentropic Euler). For the full Euler equations, the integrability condition is false, and characteristic variables do not exist. The explanation therefore is to be understood in the simplified setting of hyperbolic systems with characteristic variables., but only one of them is constant along the characteristic. The speed is thus changing in function of the values brought in by the other characteristic families.

The correct way to achieve a third-order approximate evolution operator in one spatial dimension is thus characterized by a mixing of eigenvalues. For example, for a 2Ɨ2222\times 22 Ɨ 2 system

āˆ‚tq1+Ī»1⁢(q1,q2)ā¢āˆ‚xq1subscriptš‘”subscriptš‘ž1subscriptšœ†1subscriptš‘ž1subscriptš‘ž2subscriptš‘„subscriptš‘ž1\displaystyle\partial_{t}q_{1}+\lambda_{1}(q_{1},q_{2})\partial_{x}q_{1}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_Ī» start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_q start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT =0absent0\displaystyle=0= 0 (80)
āˆ‚tq2+Ī»2⁢(q1,q2)ā¢āˆ‚xq2subscriptš‘”subscriptš‘ž2subscriptšœ†2subscriptš‘ž1subscriptš‘ž2subscriptš‘„subscriptš‘ž2\displaystyle\partial_{t}q_{2}+\lambda_{2}(q_{1},q_{2})\partial_{x}q_{2}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT + italic_Ī» start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_q start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT =0absent0\displaystyle=0= 0 (81)

with initial data qk⁢(0,x)=q0,k⁢(x)subscriptš‘žš‘˜0š‘„subscriptš‘ž0š‘˜š‘„q_{k}(0,x)=q_{0,k}(x)italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( 0 , italic_x ) = italic_q start_POSTSUBSCRIPT 0 , italic_k end_POSTSUBSCRIPT ( italic_x ), local linearization produces xāˆ’t⁢λ1⁢(q1,0⁢(x),q2,0⁢(x))š‘„š‘”subscriptšœ†1subscriptš‘ž10š‘„subscriptš‘ž20š‘„x-t\lambda_{1}\big{(}q_{1,0}(x),q_{2,0}(x)\big{)}italic_x - italic_t italic_Ī» start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 1 , 0 end_POSTSUBSCRIPT ( italic_x ) , italic_q start_POSTSUBSCRIPT 2 , 0 end_POSTSUBSCRIPT ( italic_x ) ) as the estimate of the foot of the 1-characteristic passing through xš‘„xitalic_x at time tš‘”titalic_t. The estimate to next order of accuracy is ([Bar21a])

xāˆ’t⁢λ1⁢(q1,0⁢(xāˆ’t⁢λ1⁢(x)),q2,0⁢(xāˆ’t⁢λ1⁢(x)+Ī»2⁢(x)2))š‘„š‘”subscriptšœ†1subscriptš‘ž10š‘„š‘”subscriptšœ†1š‘„subscriptš‘ž20š‘„š‘”subscriptšœ†1š‘„subscriptšœ†2š‘„2\displaystyle x-t\lambda_{1}\left(q_{1,0}\big{(}x-t\lambda_{1}(x)\big{)},q_{2,% 0}\left(x-t\frac{\lambda_{1}(x)+\lambda_{2}(x)}{2}\right)\right)italic_x - italic_t italic_Ī» start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 1 , 0 end_POSTSUBSCRIPT ( italic_x - italic_t italic_Ī» start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_x ) ) , italic_q start_POSTSUBSCRIPT 2 , 0 end_POSTSUBSCRIPT ( italic_x - italic_t divide start_ARG italic_Ī» start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_x ) + italic_Ī» start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_x ) end_ARG start_ARG 2 end_ARG ) ) (82)

Here, Ī»k⁢(x)subscriptšœ†š‘˜š‘„\lambda_{k}(x)italic_Ī» start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_x ) is short-hand for Ī»k⁢(q1,0⁢(x),q2,0⁢(x))subscriptšœ†š‘˜subscriptš‘ž10š‘„subscriptš‘ž20š‘„\lambda_{k}(q_{1,0}(x),q_{2,0}(x))italic_Ī» start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_q start_POSTSUBSCRIPT 1 , 0 end_POSTSUBSCRIPT ( italic_x ) , italic_q start_POSTSUBSCRIPT 2 , 0 end_POSTSUBSCRIPT ( italic_x ) ). Simple characteristic-wise fixpoint iteration will never produce signals traveling at the average speed Ī»1⁢(x)+Ī»2⁢(x)2subscriptšœ†1š‘„subscriptšœ†2š‘„2\frac{\lambda_{1}(x)+\lambda_{2}(x)}{2}divide start_ARG italic_Ī» start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_x ) + italic_Ī» start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_x ) end_ARG start_ARG 2 end_ARG. For more complicated hyperbolic systems than (80)-(81) one additionally needs to take into account the changing eigenvectors, see [Bar21a] for the general algorithm in 1-d. Therein, this algorithm has been successfully applied to the Euler equations.

For nonlinear systems in multiple spatial dimensions the question of high-order evolution operators beyond local linearization is open. In practice, local linearization is employed (e.g. in [FR15, CHLM24]), thus formally reducing the order to second. The nonlinear version of advection, however, is amenable to higher-order evolution as discussed in [Mae17]. Here, a different and inexpensive modification for solve (74)–(75) is used, as described below.

Overall, since the reconstruction and all quadratures are third-order, the presented method is third-order accurate in space. To yield an Active Flux method that is also third-order accurate in time, the point updates have to have an error of at most š’Ŗā¢(t3)š’Ŗsuperscriptš‘”3\mathcal{O}(t^{3})caligraphic_O ( italic_t start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT ) ([Bar21a]). While the advective operator is solved with this accuracy (see below), the locally linearized acoustics operator and the operator splitting both have errors š’Ŗā¢(t2)š’Ŗsuperscriptš‘”2\mathcal{O}(t^{2})caligraphic_O ( italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) and thus make the method formally second-order in time. This, at one order higher, finds parallels in the current practice: For high-order methods such as WENO or DG, it is actually customary to save on the effort of an adequately high-order time integration and a method like RK3 is often used. As is shown below, experimental results on the presented method give rise to the conclusion that the global error is not dominated by its second-order component in typical numerical tests. In fact, basing one’s conclusion on certain experimental results one could easily mistake the method for a third-order accurate one.

3.4.2 A high-order evolution operator for nonlinear advection

Consider a hyperbolic system

āˆ‚tq+Jx⁢(q)ā¢āˆ‚xq+Jy⁢(q)ā¢āˆ‚yq=0subscriptš‘”š‘žsuperscriptš½š‘„š‘žsubscriptš‘„š‘žsuperscriptš½š‘¦š‘žsubscriptš‘¦š‘ž0\displaystyle\partial_{t}q+J^{x}(q)\partial_{x}q+J^{y}(q)\partial_{y}q=0āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_q + italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( italic_q ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( italic_q ) āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q = 0 (83)

with initial data q⁢(0,š±)=q0⁢(š±)š‘ž0š±subscriptš‘ž0š±q(0,\mathbf{x})=q_{0}(\mathbf{x})italic_q ( 0 , bold_x ) = italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ). We denote the components of the initial data as qi,0⁢(š±)subscriptš‘žš‘–0š±q_{i,0}(\mathbf{x})italic_q start_POSTSUBSCRIPT italic_i , 0 end_POSTSUBSCRIPT ( bold_x ).

Theorem 3.1.

If Jx=vxā¢šŸ™superscriptš½š‘„superscriptš‘£š‘„double-struck-šŸ™J^{x}=v^{x}\mathbb{1}italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT blackboard_šŸ™, Jy=vyā¢šŸ™superscriptš½š‘¦superscriptš‘£š‘¦double-struck-šŸ™J^{y}=v^{y}\mathbb{1}italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT = italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT blackboard_šŸ™ and both vxsubscriptš‘£š‘„v_{x}italic_v start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT and vysubscriptš‘£š‘¦v_{y}italic_v start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT are components of qš‘žqitalic_q (as in (74)–(75)), then the solution of (83) (if smooth) is

q⁢(t,š±)=qloc.lin.⁢(t,š±)+t2ā¢āˆ‡qi,0ā‹…((šÆ0ā‹…āˆ‡)ā¢šÆ0)+š’Ŗā¢(t3)š‘žš‘”š±subscriptš‘žloc.lin.š‘”š±ā‹…superscriptš‘”2āˆ‡subscriptš‘žš‘–0ā‹…subscriptšÆ0āˆ‡subscriptšÆ0š’Ŗsuperscriptš‘”3\displaystyle q(t,\mathbf{x})=q_{\text{loc.lin.}}(t,\mathbf{x})+t^{2}\nabla q_% {i,0}\cdot((\mathbf{v}_{0}\cdot\nabla)\mathbf{v}_{0})+\mathcal{O}(t^{3})italic_q ( italic_t , bold_x ) = italic_q start_POSTSUBSCRIPT loc.lin. end_POSTSUBSCRIPT ( italic_t , bold_x ) + italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT āˆ‡ italic_q start_POSTSUBSCRIPT italic_i , 0 end_POSTSUBSCRIPT ā‹… ( ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… āˆ‡ ) bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) + caligraphic_O ( italic_t start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT ) (84)

where qloc.lin.⁢(t,š±)subscriptš‘žloc.lin.š‘”š±q_{\text{loc.lin.}}(t,\mathbf{x})italic_q start_POSTSUBSCRIPT loc.lin. end_POSTSUBSCRIPT ( italic_t , bold_x ) is obtained by considering Jxsuperscriptš½š‘„J^{x}italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT, Jysuperscriptš½š‘¦J^{y}italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT fixed with whatever value they have at š±š±\mathbf{x}bold_x at t=0š‘”0t=0italic_t = 0, and šÆ0=(vx⁢(0,š±),vy⁢(0,š±))subscriptšÆ0superscriptš‘£š‘„0š±superscriptš‘£š‘¦0š±\mathbf{v}_{0}=(v^{x}(0,\mathbf{x}),v^{y}(0,\mathbf{x}))bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = ( italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( 0 , bold_x ) , italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( 0 , bold_x ) ).

Proof.

We find (summation over repeated indices):

āˆ‚tqi⁢(t,š±)subscriptš‘”subscriptš‘žš‘–š‘”š±\displaystyle\partial_{t}q_{i}(t,\mathbf{x})āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_t , bold_x ) =āˆ’Ji⁢jxā¢āˆ‚xqjāˆ’Ji⁢jyā¢āˆ‚yqjabsentsubscriptsuperscriptš½š‘„š‘–š‘—subscriptš‘„subscriptš‘žš‘—subscriptsuperscriptš½š‘¦š‘–š‘—subscriptš‘¦subscriptš‘žš‘—\displaystyle=-J^{x}_{ij}\partial_{x}q_{j}-J^{y}_{ij}\partial_{y}q_{j}= - italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT (85)
āˆ‚t2qi⁢(t,š±)superscriptsubscriptš‘”2subscriptš‘žš‘–š‘”š±\displaystyle\partial_{t}^{2}q_{i}(t,\mathbf{x})āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_t , bold_x ) =āˆ’Ji⁢jxā¢āˆ‚xāˆ‚tqjāˆ’Ji⁢jyā¢āˆ‚yāˆ‚tqjāˆ’āˆ‚tJi⁢jxā¢āˆ‚xqjāˆ’āˆ‚tJi⁢jyā¢āˆ‚yqjabsentsubscriptsuperscriptš½š‘„š‘–š‘—subscriptš‘„subscriptš‘”subscriptš‘žš‘—subscriptsuperscriptš½š‘¦š‘–š‘—subscriptš‘¦subscriptš‘”subscriptš‘žš‘—subscriptš‘”subscriptsuperscriptš½š‘„š‘–š‘—subscriptš‘„subscriptš‘žš‘—subscriptš‘”subscriptsuperscriptš½š‘¦š‘–š‘—subscriptš‘¦subscriptš‘žš‘—\displaystyle=-J^{x}_{ij}\partial_{x}\partial_{t}q_{j}-J^{y}_{ij}\partial_{y}% \partial_{t}q_{j}-\partial_{t}J^{x}_{ij}\partial_{x}q_{j}-\partial_{t}J^{y}_{% ij}\partial_{y}q_{j}= - italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT (86)
=Ji⁢jxā¢āˆ‚x(Jj⁢kxā¢āˆ‚xqk+Jj⁢kyā¢āˆ‚yqk)+Ji⁢jyā¢āˆ‚y(Jj⁢kxā¢āˆ‚xqk+Jj⁢kyā¢āˆ‚yqk)absentsubscriptsuperscriptš½š‘„š‘–š‘—subscriptš‘„subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘¦subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘–š‘—subscriptš‘¦subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘¦subscriptš‘žš‘˜\displaystyle=J^{x}_{ij}\partial_{x}(J^{x}_{jk}\partial_{x}q_{k}+J^{y}_{jk}% \partial_{y}q_{k})+J^{y}_{ij}\partial_{y}(J^{x}_{jk}\partial_{x}q_{k}+J^{y}_{% jk}\partial_{y}q_{k})= italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) (87)
+āˆ‚Ji⁢jxāˆ‚qk⁢(Jk⁢ℓxā¢āˆ‚xqā„“+Jk⁢ℓyā¢āˆ‚yqā„“)ā¢āˆ‚xqj+āˆ‚Ji⁢jyāˆ‚qk⁢(Jk⁢ℓxā¢āˆ‚xqā„“+Jk⁢ℓyā¢āˆ‚yqā„“)ā¢āˆ‚yqjsubscriptsuperscriptš½š‘„š‘–š‘—subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘˜ā„“subscriptš‘„subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘˜ā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘—subscriptsuperscriptš½š‘¦š‘–š‘—subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘˜ā„“subscriptš‘„subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘˜ā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘—\displaystyle\qquad+\frac{\partial J^{x}_{ij}}{\partial q_{k}}(J^{x}_{k\ell}% \partial_{x}q_{\ell}+J^{y}_{k\ell}\partial_{y}q_{\ell})\partial_{x}q_{j}+\frac% {\partial J^{y}_{ij}}{\partial q_{k}}(J^{x}_{k\ell}\partial_{x}q_{\ell}+J^{y}_% {k\ell}\partial_{y}q_{\ell})\partial_{y}q_{j}+ divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT
=Ji⁢jx⁢(Jj⁢kxā¢āˆ‚x2qk+Jj⁢kyā¢āˆ‚xāˆ‚yqk+āˆ‚Jj⁢kxāˆ‚qā„“ā¢āˆ‚xqā„“ā¢āˆ‚xqk+āˆ‚Jj⁢kyāˆ‚qā„“ā¢āˆ‚xqā„“ā¢āˆ‚yqk)absentsubscriptsuperscriptš½š‘„š‘–š‘—subscriptsuperscriptš½š‘„š‘—š‘˜superscriptsubscriptš‘„2subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘„subscriptš‘¦subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘žā„“subscriptš‘„subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘žā„“subscriptš‘„subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘˜\displaystyle=J^{x}_{ij}\left(J^{x}_{jk}\partial_{x}^{2}q_{k}+J^{y}_{jk}% \partial_{x}\partial_{y}q_{k}+\frac{\partial J^{x}_{jk}}{\partial q_{\ell}}% \partial_{x}q_{\ell}\partial_{x}q_{k}+\frac{\partial J^{y}_{jk}}{\partial q_{% \ell}}\partial_{x}q_{\ell}\partial_{y}q_{k}\right)= italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) (88)
+Ji⁢jy⁢(Jj⁢kxā¢āˆ‚xāˆ‚yqk+Jj⁢kyā¢āˆ‚y2qk+āˆ‚Jj⁢kxāˆ‚qā„“ā¢āˆ‚yqā„“ā¢āˆ‚xqk+āˆ‚Jj⁢kyāˆ‚qā„“ā¢āˆ‚yqā„“ā¢āˆ‚yqk)subscriptsuperscriptš½š‘¦š‘–š‘—subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘„subscriptš‘¦subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜superscriptsubscriptš‘¦2subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘žā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘žā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘˜\displaystyle\qquad+J^{y}_{ij}\left(J^{x}_{jk}\partial_{x}\partial_{y}q_{k}+J^% {y}_{jk}\partial_{y}^{2}q_{k}+\frac{\partial J^{x}_{jk}}{\partial q_{\ell}}% \partial_{y}q_{\ell}\partial_{x}q_{k}+\frac{\partial J^{y}_{jk}}{\partial q_{% \ell}}\partial_{y}q_{\ell}\partial_{y}q_{k}\right)+ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT )
+āˆ‚Ji⁢jxāˆ‚qk⁢(Jk⁢ℓxā¢āˆ‚xqā„“+Jk⁢ℓyā¢āˆ‚yqā„“)ā¢āˆ‚xqj+āˆ‚Ji⁢jyāˆ‚qk⁢(Jk⁢ℓxā¢āˆ‚xqā„“+Jk⁢ℓyā¢āˆ‚yqā„“)ā¢āˆ‚yqjsubscriptsuperscriptš½š‘„š‘–š‘—subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘˜ā„“subscriptš‘„subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘˜ā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘—subscriptsuperscriptš½š‘¦š‘–š‘—subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘˜ā„“subscriptš‘„subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘˜ā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘—\displaystyle\qquad+\frac{\partial J^{x}_{ij}}{\partial q_{k}}(J^{x}_{k\ell}% \partial_{x}q_{\ell}+J^{y}_{k\ell}\partial_{y}q_{\ell})\partial_{x}q_{j}+\frac% {\partial J^{y}_{ij}}{\partial q_{k}}(J^{x}_{k\ell}\partial_{x}q_{\ell}+J^{y}_% {k\ell}\partial_{y}q_{\ell})\partial_{y}q_{j}+ divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT

The 4 terms not involving the derivatives of Jxsuperscriptš½š‘„J^{x}italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT, Jysuperscriptš½š‘¦J^{y}italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT are those appearing for a linear problem and hence also those produced by local linearization. The remaining terms are (renaming j↔kā†”š‘—š‘˜j\leftrightarrow kitalic_j ↔ italic_k in the last parts)

Sisubscriptš‘†š‘–\displaystyle S_{i}italic_S start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT :=Ji⁢jx⁢(āˆ‚Jj⁢kxāˆ‚qā„“ā¢āˆ‚xqā„“ā¢āˆ‚xqk+āˆ‚Jj⁢kyāˆ‚qā„“ā¢āˆ‚xqā„“ā¢āˆ‚yqk)+Ji⁢jy⁢(āˆ‚Jj⁢kxāˆ‚qā„“ā¢āˆ‚yqā„“ā¢āˆ‚xqk+āˆ‚Jj⁢kyāˆ‚qā„“ā¢āˆ‚yqā„“ā¢āˆ‚yqk)assignabsentsubscriptsuperscriptš½š‘„š‘–š‘—subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘žā„“subscriptš‘„subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘žā„“subscriptš‘„subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘–š‘—subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘žā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘žā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘˜\displaystyle:=J^{x}_{ij}\left(\frac{\partial J^{x}_{jk}}{\partial q_{\ell}}% \partial_{x}q_{\ell}\partial_{x}q_{k}+\frac{\partial J^{y}_{jk}}{\partial q_{% \ell}}\partial_{x}q_{\ell}\partial_{y}q_{k}\right)+J^{y}_{ij}\left(\frac{% \partial J^{x}_{jk}}{\partial q_{\ell}}\partial_{y}q_{\ell}\partial_{x}q_{k}+% \frac{\partial J^{y}_{jk}}{\partial q_{\ell}}\partial_{y}q_{\ell}\partial_{y}q% _{k}\right):= italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ( divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ( divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) (89)
+āˆ‚Ji⁢kxāˆ‚qj⁢(Jj⁢ℓxā¢āˆ‚xqā„“+Jj⁢ℓyā¢āˆ‚yqā„“)ā¢āˆ‚xqk+āˆ‚Ji⁢kyāˆ‚qj⁢(Jj⁢ℓxā¢āˆ‚xqā„“+Jj⁢ℓyā¢āˆ‚yqā„“)ā¢āˆ‚yqksubscriptsuperscriptš½š‘„š‘–š‘˜subscriptš‘žš‘—subscriptsuperscriptš½š‘„š‘—ā„“subscriptš‘„subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘—ā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘¦š‘–š‘˜subscriptš‘žš‘—subscriptsuperscriptš½š‘„š‘—ā„“subscriptš‘„subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘—ā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘˜\displaystyle\qquad+\frac{\partial J^{x}_{ik}}{\partial q_{j}}(J^{x}_{j\ell}% \partial_{x}q_{\ell}+J^{y}_{j\ell}\partial_{y}q_{\ell})\partial_{x}q_{k}+\frac% {\partial J^{y}_{ik}}{\partial q_{j}}(J^{x}_{j\ell}\partial_{x}q_{\ell}+J^{y}_% {j\ell}\partial_{y}q_{\ell})\partial_{y}q_{k}+ divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT
=(Ji⁢jxā¢āˆ‚Jj⁢kxāˆ‚qā„“+āˆ‚Ji⁢kxāˆ‚qj⁢Jj⁢ℓx)ā¢āˆ‚xqā„“ā¢āˆ‚xqk+(Ji⁢jxā¢āˆ‚Jj⁢kyāˆ‚qā„“+Ji⁢jyā¢āˆ‚Jj⁢ℓxāˆ‚qk+āˆ‚Ji⁢ℓxāˆ‚qj⁢Jj⁢ky+āˆ‚Ji⁢kyāˆ‚qj⁢Jj⁢ℓx)ā¢āˆ‚xqā„“ā¢āˆ‚yqkabsentsubscriptsuperscriptš½š‘„š‘–š‘—subscriptsuperscriptš½š‘„š‘—š‘˜subscriptš‘žā„“subscriptsuperscriptš½š‘„š‘–š‘˜subscriptš‘žš‘—subscriptsuperscriptš½š‘„š‘—ā„“subscriptš‘„subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘–š‘—subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘–š‘—subscriptsuperscriptš½š‘„š‘—ā„“subscriptš‘žš‘˜subscriptsuperscriptš½š‘„š‘–ā„“subscriptš‘žš‘—subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptsuperscriptš½š‘¦š‘–š‘˜subscriptš‘žš‘—subscriptsuperscriptš½š‘„š‘—ā„“subscriptš‘„subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘˜\displaystyle=\left(J^{x}_{ij}\frac{\partial J^{x}_{jk}}{\partial q_{\ell}}+% \frac{\partial J^{x}_{ik}}{\partial q_{j}}J^{x}_{j\ell}\right)\partial_{x}q_{% \ell}\partial_{x}q_{k}+\left(J^{x}_{ij}\frac{\partial J^{y}_{jk}}{\partial q_{% \ell}}+J^{y}_{ij}\frac{\partial J^{x}_{j\ell}}{\partial q_{k}}+\frac{\partial J% ^{x}_{i\ell}}{\partial q_{j}}J^{y}_{jk}+\frac{\partial J^{y}_{ik}}{\partial q_% {j}}J^{x}_{j\ell}\right)\partial_{x}q_{\ell}\partial_{y}q_{k}= ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + ( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG + italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i roman_ā„“ end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT (90)
+(Ji⁢jyā¢āˆ‚Jj⁢kyāˆ‚qā„“+āˆ‚Ji⁢kyāˆ‚qj⁢Jj⁢ℓy)ā¢āˆ‚yqā„“ā¢āˆ‚yqksubscriptsuperscriptš½š‘¦š‘–š‘—subscriptsuperscriptš½š‘¦š‘—š‘˜subscriptš‘žā„“subscriptsuperscriptš½š‘¦š‘–š‘˜subscriptš‘žš‘—subscriptsuperscriptš½š‘¦š‘—ā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘˜\displaystyle\qquad+\left(J^{y}_{ij}\frac{\partial J^{y}_{jk}}{\partial q_{% \ell}}+\frac{\partial J^{y}_{ik}}{\partial q_{j}}J^{y}_{j\ell}\right)\partial_% {y}q_{\ell}\partial_{y}q_{k}+ ( italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG + divide start_ARG āˆ‚ italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_k end_POSTSUBSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j roman_ā„“ end_POSTSUBSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT

Consider now the special case (Jx)i⁢j=vx⁢Γi⁢jsubscriptsuperscriptš½š‘„š‘–š‘—superscriptš‘£š‘„subscriptš›æš‘–š‘—(J^{x})_{ij}=v^{x}\delta_{ij}( italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ) start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT = italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT italic_Ī“ start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT, (Jy)i⁢j=vy⁢Γi⁢jsubscriptsuperscriptš½š‘¦š‘–š‘—superscriptš‘£š‘¦subscriptš›æš‘–š‘—(J^{y})_{ij}=v^{y}\delta_{ij}( italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ) start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT = italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT italic_Ī“ start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT:

Sisubscriptš‘†š‘–\displaystyle S_{i}italic_S start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT =2⁢vxā¢āˆ‚vxāˆ‚qā„“ā¢āˆ‚xqā„“ā¢āˆ‚xqi+(2⁢vxā¢āˆ‚vyāˆ‚qā„“ā¢āˆ‚xqā„“ā¢āˆ‚yqi+2⁢vyā¢āˆ‚vxāˆ‚qkā¢āˆ‚xqiā¢āˆ‚yqk)+2⁢vyā¢āˆ‚vyāˆ‚qā„“ā¢āˆ‚yqā„“ā¢āˆ‚yqiabsent2superscriptš‘£š‘„superscriptš‘£š‘„subscriptš‘žā„“subscriptš‘„subscriptš‘žā„“subscriptš‘„subscriptš‘žš‘–2superscriptš‘£š‘„superscriptš‘£š‘¦subscriptš‘žā„“subscriptš‘„subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘–2superscriptš‘£š‘¦superscriptš‘£š‘„subscriptš‘žš‘˜subscriptš‘„subscriptš‘žš‘–subscriptš‘¦subscriptš‘žš‘˜2superscriptš‘£š‘¦superscriptš‘£š‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žā„“subscriptš‘¦subscriptš‘žš‘–\displaystyle=2v^{x}\frac{\partial v^{x}}{\partial q_{\ell}}\partial_{x}q_{% \ell}\partial_{x}q_{i}+\left(2v^{x}\frac{\partial v^{y}}{\partial q_{\ell}}% \partial_{x}q_{\ell}\partial_{y}q_{i}+2v^{y}\frac{\partial v^{x}}{\partial q_{% k}}\partial_{x}q_{i}\partial_{y}q_{k}\right)+2v^{y}\frac{\partial v^{y}}{% \partial q_{\ell}}\partial_{y}q_{\ell}\partial_{y}q_{i}= 2 italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT divide start_ARG āˆ‚ italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT + ( 2 italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT divide start_ARG āˆ‚ italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT + 2 italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT divide start_ARG āˆ‚ italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) + 2 italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT divide start_ARG āˆ‚ italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT end_ARG start_ARG āˆ‚ italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT end_ARG āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT (91)
=2⁢(vxā¢āˆ‚xvx+vyā¢āˆ‚yvx)ā¢āˆ‚xqi+2⁢(vxā¢āˆ‚xvy+vyā¢āˆ‚yvy)ā¢āˆ‚yqiabsent2superscriptš‘£š‘„subscriptš‘„superscriptš‘£š‘„superscriptš‘£š‘¦subscriptš‘¦superscriptš‘£š‘„subscriptš‘„subscriptš‘žš‘–2superscriptš‘£š‘„subscriptš‘„superscriptš‘£š‘¦superscriptš‘£š‘¦subscriptš‘¦superscriptš‘£š‘¦subscriptš‘¦subscriptš‘žš‘–\displaystyle=2(v^{x}\partial_{x}v^{x}+v^{y}\partial_{y}v^{x})\partial_{x}q_{i% }+2(v^{x}\partial_{x}v^{y}+v^{y}\partial_{y}v^{y})\partial_{y}q_{i}= 2 ( italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT + italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT + 2 ( italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT + italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ) āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT (92)
=2ā¢āˆ‡qiā‹…((šÆā‹…āˆ‡)ā¢šÆ)absentā‹…2āˆ‡subscriptš‘žš‘–ā‹…šÆāˆ‡šÆ\displaystyle=2\nabla q_{i}\cdot((\mathbf{v}\cdot\nabla)\mathbf{v})= 2 āˆ‡ italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ā‹… ( ( bold_v ā‹… āˆ‡ ) bold_v ) (93)

At this point the advantage of primitive variables is clearly visible. The statement is obtained by realizing that the derivatives need to be evaluated at t=0š‘”0t=0italic_t = 0 in the Taylor series of the solution. āˆŽ

Theorem 3.2.

If Jx=vxā¢šŸ™superscriptš½š‘„superscriptš‘£š‘„double-struck-šŸ™J^{x}=v^{x}\mathbb{1}italic_J start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT blackboard_šŸ™, Jy=vyā¢šŸ™superscriptš½š‘¦superscriptš‘£š‘¦double-struck-šŸ™J^{y}=v^{y}\mathbb{1}italic_J start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT = italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT blackboard_šŸ™, then the solution of (83) with initial data q⁢(0,š±)=q0⁢(š±)š‘ž0š±subscriptš‘ž0š±q(0,\mathbf{x})=q_{0}(\mathbf{x})italic_q ( 0 , bold_x ) = italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) is

q⁢(t,š±)=q0⁢(š±āˆ’šÆ0⁢(xāˆ’šÆ0⁢(š±)⁢t)⁢t)+š’Ŗā¢(t3)š‘žš‘”š±subscriptš‘ž0š±subscriptšÆ0š‘„subscriptšÆ0š±š‘”š‘”š’Ŗsuperscriptš‘”3\displaystyle q(t,\mathbf{x})=q_{0}\Big{(}\mathbf{x}-\mathbf{v}_{0}\big{(}x-% \mathbf{v}_{0}(\mathbf{x})t\big{)}t\Big{)}+\mathcal{O}(t^{3})italic_q ( italic_t , bold_x ) = italic_q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) italic_t ) + caligraphic_O ( italic_t start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT ) (94)

where šÆ0⁢(š±)=(vx⁢(0,š±),vy⁢(0,š±))subscriptšÆ0š±superscriptš‘£š‘„0š±superscriptš‘£š‘¦0š±\mathbf{v}_{0}(\mathbf{x})=(v^{x}(0,\mathbf{x}),v^{y}(0,\mathbf{x}))bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) = ( italic_v start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( 0 , bold_x ) , italic_v start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( 0 , bold_x ) ).

This is the same simple iteration as is in use for scalar conservation laws.

Proof.

We need to verify the presence of the term Δ⁢t2ā¢āˆ‡qi|t=0ā‹…((šÆ0ā‹…āˆ‡)ā¢šÆ0)ā‹…evaluated-atĪ”superscriptš‘”2āˆ‡subscriptš‘žš‘–š‘”0ā‹…subscriptšÆ0āˆ‡subscriptšÆ0\Delta t^{2}\nabla q_{i}\Big{|}_{t=0}\cdot((\mathbf{v}_{0}\cdot\nabla)\mathbf{% v}_{0})roman_Ī” italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT āˆ‡ italic_q start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | start_POSTSUBSCRIPT italic_t = 0 end_POSTSUBSCRIPT ā‹… ( ( bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ā‹… āˆ‡ ) bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ).

q~i⁢(t,š±)subscript~š‘žš‘–š‘”š±\displaystyle\tilde{q}_{i}(t,\mathbf{x})over~ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_t , bold_x ) :=qi,0⁢(š±āˆ’šÆ0⁢(š±āˆ’šÆ0⁢(š±)⁢t)⁢t)assignabsentsubscriptš‘žš‘–0š±subscriptšÆ0š±subscriptšÆ0š±š‘”š‘”\displaystyle:=q_{i,0}\Big{(}\mathbf{x}-\mathbf{v}_{0}\big{(}\mathbf{x}-% \mathbf{v}_{0}(\mathbf{x})t\big{)}t\Big{)}:= italic_q start_POSTSUBSCRIPT italic_i , 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) italic_t ) (95)
āˆ‚tq~i⁢(t,š±)subscriptš‘”subscript~š‘žš‘–š‘”š±\displaystyle\partial_{t}\tilde{q}_{i}(t,\mathbf{x})āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT over~ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_t , bold_x ) =āˆ‚kqi,0⁢(š±āˆ’šÆ0⁢(š±āˆ’šÆ0⁢(š±)⁢t)⁢t)ā¢āˆ‚t(xkāˆ’v0k⁢(š±āˆ’šÆ0⁢(š±)⁢t)⁢t)absentsubscriptš‘˜subscriptš‘žš‘–0š±subscriptšÆ0š±subscriptšÆ0š±š‘”š‘”subscriptš‘”subscriptš‘„š‘˜subscriptsuperscriptš‘£š‘˜0š±subscriptšÆ0š±š‘”š‘”\displaystyle=\partial_{k}q_{i,0}\Big{(}\mathbf{x}-\mathbf{v}_{0}\big{(}% \mathbf{x}-\mathbf{v}_{0}(\mathbf{x})t\big{)}t\Big{)}\partial_{t}\big{(}x_{k}-% v^{k}_{0}(\mathbf{x}-\mathbf{v}_{0}(\mathbf{x})t)t\big{)}= āˆ‚ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i , 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) italic_t ) āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ( italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_v start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) italic_t ) (96)
=āˆ’āˆ‚kqi,0⁢(š±āˆ’šÆ0⁢(š±āˆ’šÆ0⁢(š±)⁢t)⁢t)⁢(āˆ’āˆ‚ā„“v0k⁢(š±āˆ’šÆ0⁢(š±)⁢t)⁢v0ℓ⁢(š±)⁢t+v0k⁢(š±āˆ’šÆ0⁢(š±)⁢t))absentsubscriptš‘˜subscriptš‘žš‘–0š±subscriptšÆ0š±subscriptšÆ0š±š‘”š‘”subscriptā„“subscriptsuperscriptš‘£š‘˜0š±subscriptšÆ0š±š‘”subscriptsuperscriptš‘£ā„“0š±š‘”subscriptsuperscriptš‘£š‘˜0š±subscriptšÆ0š±š‘”\displaystyle=-\partial_{k}q_{i,0}\Big{(}\mathbf{x}-\mathbf{v}_{0}\big{(}% \mathbf{x}-\mathbf{v}_{0}(\mathbf{x})t\big{)}t\Big{)}\Big{(}-\partial_{\ell}v^% {k}_{0}\big{(}\mathbf{x}-\mathbf{v}_{0}(\mathbf{x})t\big{)}v^{\ell}_{0}(% \mathbf{x})t+v^{k}_{0}\big{(}\mathbf{x}-\mathbf{v}_{0}(\mathbf{x})t\big{)}\Big% {)}= - āˆ‚ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i , 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) italic_t ) ( - āˆ‚ start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT italic_v start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) italic_v start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t + italic_v start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) ) (97)
āˆ‚t2q~i⁢(t,š±)|t=0evaluated-atsuperscriptsubscriptš‘”2subscript~š‘žš‘–š‘”š±š‘”0\displaystyle\partial_{t}^{2}\tilde{q}_{i}(t,\mathbf{x})\Big{|}_{t=0}āˆ‚ start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT over~ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_t , bold_x ) | start_POSTSUBSCRIPT italic_t = 0 end_POSTSUBSCRIPT =āˆ‚ā„“āˆ‚kqi,0⁢(š±)⁢v0ℓ⁢(š±)⁢v0k⁢(š±)+2ā¢āˆ‚kqi,0⁢(š±)⁢v0ℓ⁢(š±)ā¢āˆ‚ā„“v0k⁢(š±)absentsubscriptā„“subscriptš‘˜subscriptš‘žš‘–0š±subscriptsuperscriptš‘£ā„“0š±subscriptsuperscriptš‘£š‘˜0š±2subscriptš‘˜subscriptš‘žš‘–0š±subscriptsuperscriptš‘£ā„“0š±subscriptā„“subscriptsuperscriptš‘£š‘˜0š±\displaystyle=\partial_{\ell}\partial_{k}q_{i,0}(\mathbf{x})v^{\ell}_{0}(% \mathbf{x})v^{k}_{0}(\mathbf{x})+2\partial_{k}q_{i,0}(\mathbf{x})v^{\ell}_{0}(% \mathbf{x})\partial_{\ell}v^{k}_{0}(\mathbf{x})= āˆ‚ start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT āˆ‚ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i , 0 end_POSTSUBSCRIPT ( bold_x ) italic_v start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_v start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) + 2 āˆ‚ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT italic_i , 0 end_POSTSUBSCRIPT ( bold_x ) italic_v start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) āˆ‚ start_POSTSUBSCRIPT roman_ā„“ end_POSTSUBSCRIPT italic_v start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) (98)

Here āˆ‚ksubscriptš‘˜\partial_{k}āˆ‚ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT denotes āˆ‚0ā‰”āˆ‚xsubscript0subscriptš‘„\partial_{0}\equiv\partial_{x}āˆ‚ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ≔ āˆ‚ start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT, āˆ‚1ā‰”āˆ‚ysubscript1subscriptš‘¦\partial_{1}\equiv\partial_{y}āˆ‚ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ≔ āˆ‚ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT, and analogously for the components vksuperscriptš‘£š‘˜v^{k}italic_v start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT of šÆšÆ\mathbf{v}bold_v. The first term is that of local linearization, and the second is precisely the extra term from Theorem 3.1. āˆŽ

In the Active Flux method therefore, instead of solving (74)–(75) via local linearization, two iterations are performed: One obtains first

š±~:=š±āˆ’šÆ0⁢(š±āˆ’šÆ0⁢(š±)⁢t)⁢tassign~š±š±subscriptšÆ0š±subscriptšÆ0š±š‘”š‘”\displaystyle\tilde{\mathbf{x}}:=\mathbf{x}-\mathbf{v}_{0}\big{(}\mathbf{x}-% \mathbf{v}_{0}(\mathbf{x})t\big{)}tover~ start_ARG bold_x end_ARG := bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x - bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( bold_x ) italic_t ) italic_t (99)

and then, the reconstruction of ρ,šÆ,pšœŒšÆš‘\rho,\mathbf{v},pitalic_ρ , bold_v , italic_p is evaluated at š±~~š±\tilde{\mathbf{x}}over~ start_ARG bold_x end_ARG. Recall that this is a very special case, and does not lead to an increase in order in situations of non-commuting Jacobian matrices, i.e. it is not applicable to the acoustic operator. The difference of the present approach to that of [RMF18] is the absence of spatial derivatives. One can draw the following analogy to methods for ODEs: While the approach of [Mae17, RMF18]is similar to the Lax-Wendroff procedure converting higher time derivatives to space derivatives, the approach of [Bar21a] as well as the prescription (99) are more in the spirit of a Runge-Kutta method that generates the right terms in the Taylor series through nested evaluations.

3.5 Bound preservation

3.5.1 Point value update

Since the new point values are required to obtain the fluxes for the average update, bound preservation for the point values is ensured first. Action is deemed necessary, if the new value is NaN (which can happen if the speed of sound has been evaluated at a location with negative density or pressure) or if the new value has a pressure or density that is lower then ϵitalic-ϵ\epsilonitalic_ϵ. Here, ϵ=10āˆ’10italic-ϵsuperscript1010\epsilon=10^{-10}italic_ϵ = 10 start_POSTSUPERSCRIPT - 10 end_POSTSUPERSCRIPT is chosen. If limiting is needed, a local Lax-Friedrichs method based on the three values

qĀÆi⁢jsubscriptĀÆš‘žš‘–š‘—\displaystyle\bar{q}_{ij}overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT qi+12,jsubscriptš‘žš‘–12š‘—\displaystyle q_{i+\frac{1}{2},j}italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT qĀÆi+1,jsubscriptĀÆš‘žš‘–1š‘—\displaystyle\bar{q}_{i+1,j}overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i + 1 , italic_j end_POSTSUBSCRIPT (100)

is used (and analogously for the other direction). This amounts to defining control volumes of size Δ⁢x2×Δ⁢y2Ī”š‘„2Ī”š‘¦2\frac{\Delta x}{2}\times\frac{\Delta y}{2}divide start_ARG roman_Ī” italic_x end_ARG start_ARG 2 end_ARG Ɨ divide start_ARG roman_Ī” italic_y end_ARG start_ARG 2 end_ARG centered at each degree of freedom (see Figure 2), and identifying the average with the point value at cell center. Thus, the bound preserving point value at edge midpoint is

qi+12,jn+1,lim=qi+12,jnāˆ’Ī”ā¢tΔ⁢x/2⁢(fx⁢(qĀÆi+1,jn)āˆ’fx⁢(qĀÆi⁢jn)2āˆ’Ī»HLL2⁢(qĀÆi+1,jnāˆ’2⁢qi+12,jn+qĀÆi⁢jn))superscriptsubscriptš‘žš‘–12š‘—š‘›1limsuperscriptsubscriptš‘žš‘–12š‘—š‘›Ī”š‘”Ī”š‘„2superscriptš‘“š‘„subscriptsuperscriptĀÆš‘žš‘›š‘–1š‘—superscriptš‘“š‘„subscriptsuperscriptĀÆš‘žš‘›š‘–š‘—2superscriptšœ†HLL2subscriptsuperscriptĀÆš‘žš‘›š‘–1š‘—2subscriptsuperscriptš‘žš‘›š‘–12š‘—subscriptsuperscriptĀÆš‘žš‘›š‘–š‘—\displaystyle q_{i+\frac{1}{2},j}^{n+1,\text{lim}}=q_{i+\frac{1}{2},j}^{n}-% \frac{\Delta t}{\Delta x/2}\left(\frac{f^{x}(\bar{q}^{n}_{i+1,j})-f^{x}(\bar{q% }^{n}_{ij})}{2}-\frac{\lambda^{\text{HLL}}}{2}(\bar{q}^{n}_{i+1,j}-2q^{n}_{i+% \frac{1}{2},j}+\bar{q}^{n}_{ij})\right)italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n + 1 , lim end_POSTSUPERSCRIPT = italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT - divide start_ARG roman_Ī” italic_t end_ARG start_ARG roman_Ī” italic_x / 2 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + 1 , italic_j end_POSTSUBSCRIPT ) - italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ) end_ARG start_ARG 2 end_ARG - divide start_ARG italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT end_ARG start_ARG 2 end_ARG ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + 1 , italic_j end_POSTSUBSCRIPT - 2 italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT + overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ) ) (101)

An analogous approach is used for the perpendicular edges, while for the node, four neighbours contribute:

qi+12,j+12n+1,lim=qi+12,j+12nsuperscriptsubscriptš‘žš‘–12š‘—12š‘›1limsuperscriptsubscriptš‘žš‘–12š‘—12š‘›\displaystyle q_{i+\frac{1}{2},j+\frac{1}{2}}^{n+1,\text{lim}}=q_{i+\frac{1}{2% },j+\frac{1}{2}}^{n}italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n + 1 , lim end_POSTSUPERSCRIPT = italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT āˆ’Ī”ā¢tΔ⁢x/2⁢(fx⁢(qĀÆi+1,j+12n)āˆ’fx⁢(qĀÆi,j+12n)2āˆ’Ī»HLL2⁢(qĀÆi+1,j+12nāˆ’2⁢qi+12,j+12n+qĀÆi,j+12n))Ī”š‘”Ī”š‘„2superscriptš‘“š‘„subscriptsuperscriptĀÆš‘žš‘›š‘–1š‘—12superscriptš‘“š‘„subscriptsuperscriptĀÆš‘žš‘›š‘–š‘—122superscriptšœ†HLL2subscriptsuperscriptĀÆš‘žš‘›š‘–1š‘—122subscriptsuperscriptš‘žš‘›š‘–12š‘—12subscriptsuperscriptĀÆš‘žš‘›š‘–š‘—12\displaystyle-\frac{\Delta t}{\Delta x/2}\left(\frac{f^{x}(\bar{q}^{n}_{i+1,j+% \frac{1}{2}})-f^{x}(\bar{q}^{n}_{i,j+\frac{1}{2}})}{2}-\frac{\lambda^{\text{% HLL}}}{2}(\bar{q}^{n}_{i+1,j+\frac{1}{2}}-2q^{n}_{i+\frac{1}{2},j+\frac{1}{2}}% +\bar{q}^{n}_{i,j+\frac{1}{2}})\right)- divide start_ARG roman_Ī” italic_t end_ARG start_ARG roman_Ī” italic_x / 2 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + 1 , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) - italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) end_ARG start_ARG 2 end_ARG - divide start_ARG italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT end_ARG start_ARG 2 end_ARG ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + 1 , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT - 2 italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT + overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT ) ) (102)
āˆ’Ī”ā¢tΔ⁢y/2⁢(fy⁢(qĀÆi+12,j+1n)āˆ’fy⁢(qĀÆi+12,jn)2āˆ’Ī»HLL2⁢(qĀÆi+12,j+1nāˆ’2⁢qi+12,j+12n+qĀÆi+12,jn))Ī”š‘”Ī”š‘¦2superscriptš‘“š‘¦subscriptsuperscriptĀÆš‘žš‘›š‘–12š‘—1superscriptš‘“š‘¦subscriptsuperscriptĀÆš‘žš‘›š‘–12š‘—2superscriptšœ†HLL2subscriptsuperscriptĀÆš‘žš‘›š‘–12š‘—12subscriptsuperscriptš‘žš‘›š‘–12š‘—12subscriptsuperscriptĀÆš‘žš‘›š‘–12š‘—\displaystyle-\frac{\Delta t}{\Delta y/2}\left(\frac{f^{y}(\bar{q}^{n}_{i+% \frac{1}{2},j+1})-f^{y}(\bar{q}^{n}_{i+\frac{1}{2},j})}{2}-\frac{\lambda^{% \text{HLL}}}{2}(\bar{q}^{n}_{i+\frac{1}{2},j+1}-2q^{n}_{i+\frac{1}{2},j+\frac{% 1}{2}}+\bar{q}^{n}_{i+\frac{1}{2},j})\right)- divide start_ARG roman_Ī” italic_t end_ARG start_ARG roman_Ī” italic_y / 2 end_ARG ( divide start_ARG italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + 1 end_POSTSUBSCRIPT ) - italic_f start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) end_ARG start_ARG 2 end_ARG - divide start_ARG italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT end_ARG start_ARG 2 end_ARG ( overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + 1 end_POSTSUBSCRIPT - 2 italic_q start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j + divide start_ARG 1 end_ARG start_ARG 2 end_ARG end_POSTSUBSCRIPT + overĀÆ start_ARG italic_q end_ARG start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) )

Since the point values are in primitive variables, prior to this calculation they need to be converted to conserved ones, and converted back afterwards. Observe that this is an a posteriori limiting, and thus very inexpensive since it occurs rarely.

Refer to caption
Refer to caption
Figure 2: Control volumes on which the local Lax-Friedrichs scheme is applied for bound preservation. Left: Update of the point value at an edge midpoint. Right: Update of the point value at a node.

Finally, for all edges the states

qi+12,jHLL=qĀÆi+1,j+qĀÆi⁢j2āˆ’12⁢λi+12,jHLL⁢(fx⁢(qĀÆi+1,j)āˆ’fx⁢(qĀÆi⁢j))superscriptsubscriptš‘žš‘–12š‘—HLLsubscriptĀÆš‘žš‘–1š‘—subscriptĀÆš‘žš‘–š‘—212subscriptsuperscriptšœ†HLLš‘–12š‘—superscriptš‘“š‘„subscriptĀÆš‘žš‘–1š‘—superscriptš‘“š‘„subscriptĀÆš‘žš‘–š‘—\displaystyle q_{i+\frac{1}{2},j}^{\text{HLL}}=\frac{\bar{q}_{i+1,j}+\bar{q}_{% ij}}{2}-\frac{1}{2\lambda^{\text{HLL}}_{i+\frac{1}{2},j}}\left(f^{x}(\bar{q}_{% i+1,j})-f^{x}(\bar{q}_{ij})\right)italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT = divide start_ARG overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i + 1 , italic_j end_POSTSUBSCRIPT + overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG - divide start_ARG 1 end_ARG start_ARG 2 italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT end_ARG ( italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i + 1 , italic_j end_POSTSUBSCRIPT ) - italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ) ) (103)

and the fluxes

f^i+12,jHLL=fx⁢(qĀÆi+1,j)+fx⁢(qĀÆi⁢j)2āˆ’Ī»i+12,jHLL2⁢(qĀÆi+1,jāˆ’qĀÆi⁢j)superscriptsubscript^š‘“š‘–12š‘—HLLsuperscriptš‘“š‘„subscriptĀÆš‘žš‘–1š‘—superscriptš‘“š‘„subscriptĀÆš‘žš‘–š‘—2subscriptsuperscriptšœ†HLLš‘–12š‘—2subscriptĀÆš‘žš‘–1š‘—subscriptĀÆš‘žš‘–š‘—\displaystyle\hat{f}_{i+\frac{1}{2},j}^{\text{HLL}}=\frac{f^{x}(\bar{q}_{i+1,j% })+f^{x}(\bar{q}_{ij})}{2}-\frac{\lambda^{\text{HLL}}_{i+\frac{1}{2},j}}{2}% \left(\bar{q}_{i+1,j}-\bar{q}_{ij}\right)over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT = divide start_ARG italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i + 1 , italic_j end_POSTSUBSCRIPT ) + italic_f start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT ( overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ) end_ARG start_ARG 2 end_ARG - divide start_ARG italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG ( overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i + 1 , italic_j end_POSTSUBSCRIPT - overĀÆ start_ARG italic_q end_ARG start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ) (104)

are computed (analogously for perpendicular edges). These states and fluxes correspond to considering only the grid of the averages, which has spacing Δ⁢xĪ”š‘„\Delta xroman_Ī” italic_x, and they are needed later for the bound preserving limiting of the averages.

As a practical simplification, the speed Ī»i+12,jHLLsubscriptsuperscriptšœ†HLLš‘–12š‘—\lambda^{\text{HLL}}_{i+\frac{1}{2},j}italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT is computed using the point value at time tnsuperscriptš‘”š‘›t^{n}italic_t start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT; a better way is described in [DBK25] and can be applied here as well. It is also taken as the maximum of the wave speed in both directions.

3.5.2 Average update

The procedure adopted here is the one from [DBK25], which goes back to [GP16, Kuz20, Haj21] as well as [PS96, KLT12]: Given a high-order flux f^i+12,jsubscript^š‘“š‘–12š‘—\hat{f}_{i+\frac{1}{2},j}over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT (from (61)) and a low-order bound-preserving flux f^i+12,jHLLsubscriptsuperscript^š‘“HLLš‘–12š‘—\hat{f}^{\text{HLL}}_{i+\frac{1}{2},j}over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT (from (104)), a convex combination

ϑ⁢f^i+12,j+(1āˆ’Ļ‘)⁢f^i+12,jHLLitalic-Ļ‘subscript^š‘“š‘–12š‘—1italic-Ļ‘subscriptsuperscript^š‘“HLLš‘–12š‘—\displaystyle\vartheta\hat{f}_{i+\frac{1}{2},j}+(1-\vartheta)\hat{f}^{\text{% HLL}}_{i+\frac{1}{2},j}italic_Ļ‘ over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT + ( 1 - italic_Ļ‘ ) over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT =f^i+12,jHLL+ϑ⁢Δ⁢f^i+12,jabsentsubscriptsuperscript^š‘“HLLš‘–12š‘—italic-ϑΔsubscript^š‘“š‘–12š‘—\displaystyle=\hat{f}^{\text{HLL}}_{i+\frac{1}{2},j}+\vartheta\Delta\hat{f}_{i% +\frac{1}{2},j}= over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT + italic_Ļ‘ roman_Ī” over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT (105)
Δ⁢f^i+12,jĪ”subscript^š‘“š‘–12š‘—\displaystyle\Delta\hat{f}_{i+\frac{1}{2},j}roman_Ī” over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT :=f^i+12,jāˆ’f^i+12,jHLLassignabsentsubscript^š‘“š‘–12š‘—subscriptsuperscript^š‘“HLLš‘–12š‘—\displaystyle:=\hat{f}_{i+\frac{1}{2},j}-\hat{f}^{\text{HLL}}_{i+\frac{1}{2},j}:= over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT - over^ start_ARG italic_f end_ARG start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT (106)

is found that is optimal, in the sense that it is as close to high-order as possible while maintaining bound-preservation. Since the method is 1-stage, there is no need to rely on an SSP property of the time integrator.

The condition for bound preservation is that the states

qi+12,jHLL±ϑ⁢Δ⁢f^i+12,jĪ»i+12,jHLLplus-or-minussuperscriptsubscriptš‘žš‘–12š‘—HLLitalic-ϑΔsubscript^š‘“š‘–12š‘—subscriptsuperscriptšœ†HLLš‘–12š‘—\displaystyle q_{i+\frac{1}{2},j}^{\text{HLL}}\pm\vartheta\frac{\Delta\hat{f}_% {i+\frac{1}{2},j}}{\lambda^{\text{HLL}}_{i+\frac{1}{2},j}}italic_q start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT ± italic_Ļ‘ divide start_ARG roman_Ī” over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT end_ARG start_ARG italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT end_ARG (107)

have positive density and pressure (see [DBK25] for a derivation). For the density, one thus imposes

ϑ⁢Δ⁢f^i+12,j={min⁔(Δ⁢f^i+12,j,(ρi+12,jHLLāˆ’Ļµ)⁢λi+12,jHLL)Δ⁢f^i+12,j>0max⁔(Δ⁢f^i+12,j,(Ļµāˆ’Ļi+12,jHLL)⁢λi+12,jHLL)otherwiseitalic-ϑΔsubscript^š‘“š‘–12š‘—casesĪ”subscript^š‘“š‘–12š‘—superscriptsubscriptšœŒš‘–12š‘—HLLitalic-ϵsubscriptsuperscriptšœ†HLLš‘–12š‘—Ī”subscript^š‘“š‘–12š‘—0Ī”subscript^š‘“š‘–12š‘—italic-ϵsuperscriptsubscriptšœŒš‘–12š‘—HLLsubscriptsuperscriptšœ†HLLš‘–12š‘—otherwise\displaystyle\vartheta\Delta\hat{f}_{i+\frac{1}{2},j}=\begin{cases}\min(\Delta% \hat{f}_{i+\frac{1}{2},j},(\rho_{i+\frac{1}{2},j}^{\text{HLL}}-\epsilon)% \lambda^{\text{HLL}}_{i+\frac{1}{2},j})&\Delta\hat{f}_{i+\frac{1}{2},j}>0\\ \max(\Delta\hat{f}_{i+\frac{1}{2},j},(\epsilon-\rho_{i+\frac{1}{2},j}^{\text{% HLL}})\lambda^{\text{HLL}}_{i+\frac{1}{2},j})&\text{otherwise}\end{cases}italic_Ļ‘ roman_Ī” over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT = { start_ROW start_CELL roman_min ( roman_Ī” over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT , ( italic_ρ start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT - italic_ϵ ) italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) end_CELL start_CELL roman_Ī” over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT > 0 end_CELL end_ROW start_ROW start_CELL roman_max ( roman_Ī” over^ start_ARG italic_f end_ARG start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT , ( italic_ϵ - italic_ρ start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT ) italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i + divide start_ARG 1 end_ARG start_ARG 2 end_ARG , italic_j end_POSTSUBSCRIPT ) end_CELL start_CELL otherwise end_CELL end_ROW (108)

and computes the new flux of just the density according to (105).

Next, the positivity of pressure leads to the inequalities

Ļ‘2⁢A±ϑ⁢B<Cplus-or-minussuperscriptitalic-Ļ‘2š“italic-Ļ‘šµš¶\displaystyle\vartheta^{2}A\pm\vartheta B<Citalic_Ļ‘ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_A ± italic_Ļ‘ italic_B < italic_C (109)

which are ensured by enforcing (through Ļ‘āˆˆ[0,1]italic-Ļ‘01\vartheta\in[0,1]italic_Ļ‘ ∈ [ 0 , 1 ])

ϑ⁢(max⁔(0,A)+|B|)<Citalic-Ļ‘0š“šµš¶\displaystyle\vartheta\big{(}\max(0,A)+|B|\big{)}<Citalic_Ļ‘ ( roman_max ( 0 , italic_A ) + | italic_B | ) < italic_C (110)

instead. The values of A,B,Cš“šµš¶A,B,Citalic_A , italic_B , italic_C are

Aš“\displaystyle Aitalic_A =12⁢((Δ⁢fmx)2+(Δ⁢fmy)2)āˆ’Ī”ā¢fe⁢Δ⁢fρabsent12superscriptĪ”superscriptš‘“subscriptš‘šš‘„2superscriptĪ”superscriptš‘“subscriptš‘šš‘¦2Ī”superscriptš‘“š‘’Ī”superscriptš‘“šœŒ\displaystyle=\frac{1}{2}\left((\Delta f^{m_{x}})^{2}+(\Delta f^{m_{y}})^{2}% \right)-\Delta f^{e}\Delta f^{\rho}= divide start_ARG 1 end_ARG start_ARG 2 end_ARG ( ( roman_Ī” italic_f start_POSTSUPERSCRIPT italic_m start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( roman_Ī” italic_f start_POSTSUPERSCRIPT italic_m start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) - roman_Ī” italic_f start_POSTSUPERSCRIPT italic_e end_POSTSUPERSCRIPT roman_Ī” italic_f start_POSTSUPERSCRIPT italic_ρ end_POSTSUPERSCRIPT (111)
Bšµ\displaystyle Bitalic_B =(āˆ’š¦HLL⋅Δ⁢fš¦+Δ⁢fe⁢ρHLL+Δ⁢fρ⁢eHLLāˆ’Ī”ā¢fĻā¢ĻµĪ³āˆ’1)⁢λHLLabsentā‹…superscriptš¦HLLĪ”superscriptš‘“š¦Ī”superscriptš‘“š‘’superscriptšœŒHLLĪ”superscriptš‘“šœŒsuperscriptš‘’HLLĪ”superscriptš‘“šœŒitalic-Ļµš›¾1superscriptšœ†HLL\displaystyle=\left(-{\mathbf{m}}^{\text{HLL}}\cdot\Delta f^{\mathbf{m}}+% \Delta f^{e}\rho^{\text{HLL}}+\Delta f^{\rho}e^{\text{HLL}}-\Delta f^{\rho}% \frac{\epsilon}{\gamma-1}\right)\lambda^{\text{HLL}}= ( - bold_m start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT ā‹… roman_Ī” italic_f start_POSTSUPERSCRIPT bold_m end_POSTSUPERSCRIPT + roman_Ī” italic_f start_POSTSUPERSCRIPT italic_e end_POSTSUPERSCRIPT italic_ρ start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT + roman_Ī” italic_f start_POSTSUPERSCRIPT italic_ρ end_POSTSUPERSCRIPT italic_e start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT - roman_Ī” italic_f start_POSTSUPERSCRIPT italic_ρ end_POSTSUPERSCRIPT divide start_ARG italic_ϵ end_ARG start_ARG italic_γ - 1 end_ARG ) italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT (112)
Cš¶\displaystyle Citalic_C =(āˆ’ĻHLLā¢ĻµĪ³āˆ’1āˆ’12⁢((mxHLL)2+(myHLL)2)+eHLL⁢ρHLL)⁢(Ī»HLL)2absentsuperscriptšœŒHLLitalic-Ļµš›¾112superscriptsuperscriptsubscriptš‘šš‘„HLL2superscriptsuperscriptsubscriptš‘šš‘¦HLL2superscriptš‘’HLLsuperscriptšœŒHLLsuperscriptsuperscriptšœ†HLL2\displaystyle=\left(-\rho^{\text{HLL}}\frac{\epsilon}{\gamma-1}-\frac{1}{2}% \big{(}(m_{x}^{\text{HLL}})^{2}+(m_{y}^{\text{HLL}})^{2}\big{)}+e^{\text{HLL}}% \rho^{\text{HLL}}\right)(\lambda^{\text{HLL}})^{2}= ( - italic_ρ start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT divide start_ARG italic_ϵ end_ARG start_ARG italic_γ - 1 end_ARG - divide start_ARG 1 end_ARG start_ARG 2 end_ARG ( ( italic_m start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_m start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) + italic_e start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT italic_ρ start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT ) ( italic_Ī» start_POSTSUPERSCRIPT HLL end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (113)

where, to save a tree, the indices have been dropped, and š¦š¦\mathbf{m}bold_m denotes the momentum. With the Ļ‘italic-Ļ‘\varthetaitalic_Ļ‘ thus obtained, (105) is used once again to compute the new flux of all the quantities.

Limiting with ϑ=0italic-ϑ0\vartheta=0italic_ϑ = 0 is applied straight away if the high-order flux turns out to be NaN.

Deliberately no further approaches to limiting are undertaken, since the aim of this paper is to show how the pure method works, with bound preservation necessary to keep the simulation running. It is clear that it would be possible to endow the method with e.g. shock sensors to limit if necessary in a practical situation.

4 Numerical results

All numerical tests are performed with bound preservation turned on, and a CFL number of 0.45 with respect to min⁢(Δ⁢x,Δ⁢y)minĪ”š‘„Ī”š‘¦\mathrm{min}(\Delta x,\Delta y)roman_min ( roman_Ī” italic_x , roman_Ī” italic_y ). Recall that the smallest separation of two degrees of freedom is half the edge length, and thus CFL=0.5CFL0.5\text{CFL}=0.5CFL = 0.5 is the stability limit ([CHK21]). For comparison, many of the test cases are those considered in [ABK25] for the semi-discrete Active Flux method. γ=1.4š›¾1.4\gamma=1.4italic_γ = 1.4 is used throughout.

4.1 Convergence tests

First, convergence tests are performed in order to assess the effect of the combination of a third-order space discretization, and a mixed-order time discretization.

4.1.1 Contact wave

This test is from [CHLM24]: The velocity and the pressure are constant:

ρ0⁢(x,y)subscriptšœŒ0š‘„š‘¦\displaystyle\rho_{0}(x,y)italic_ρ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) =52⁢exp⁔(āˆ’40⁢((xāˆ’x0)2+(yāˆ’y0)2))+110absent5240superscriptš‘„subscriptš‘„02superscriptš‘¦subscriptš‘¦02110\displaystyle=\frac{5}{2}\exp\left(-40((x-x_{0})^{2}+(y-y_{0})^{2})\right)+% \frac{1}{10}= divide start_ARG 5 end_ARG start_ARG 2 end_ARG roman_exp ( - 40 ( ( italic_x - italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_y - italic_y start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) ) + divide start_ARG 1 end_ARG start_ARG 10 end_ARG (114)
u0⁢(x,y)subscriptš‘¢0š‘„š‘¦\displaystyle u_{0}(x,y)italic_u start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) =1absent1\displaystyle=1= 1 (115)
v0⁢(x,y)subscriptš‘£0š‘„š‘¦\displaystyle v_{0}(x,y)italic_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) =1absent1\displaystyle=1= 1 (116)
p0⁢(x,y)subscriptš‘0š‘„š‘¦\displaystyle p_{0}(x,y)italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) =1absent1\displaystyle=1= 1 (117)

[CHLM24] choose x0=y0=āˆ’0.31subscriptš‘„0subscriptš‘¦00.31x_{0}=y_{0}=-0.31italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = italic_y start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = - 0.31 on a domain [āˆ’1,1]2superscript112[-1,1]^{2}[ - 1 , 1 ] start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT. The exact solution is pure advection. Figure 3 shows the numerical error for various grid sizes at time t=2š‘”2t=2italic_t = 2. One observes third order convergence (due to the high-order advection operator), and for the point values even a machine error for pš‘pitalic_p and šÆšÆ\mathbf{v}bold_v. This is due to the usage of primitive variables, since both pressure and velocity are constant.

Refer to caption
Refer to caption
Figure 3: Convergence study for the contact wave for different grid sizes NƗNš‘š‘N\times Nitalic_N Ɨ italic_N. Left: Errors of the point values on edges. Right: Errors of the averages.

4.1.2 Moving vortex

A standard test case of an isentropic (p=ĻĪ³š‘superscriptšœŒš›¾p=\rho^{\gamma}italic_p = italic_ρ start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT) smooth moving vortex ([HS99], Example 3.3) is studied next. The initial data are

(u0⁢(x,y)v0⁢(x,y))subscriptš‘¢0š‘„š‘¦subscriptš‘£0š‘„š‘¦\displaystyle\left(\begin{array}[]{c}u_{0}(x,y)\\ v_{0}(x,y)\\ \end{array}\right)( start_ARRAY start_ROW start_CELL italic_u start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) end_CELL end_ROW start_ROW start_CELL italic_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) end_CELL end_ROW end_ARRAY ) =(11)+Ī“2⁢π⁢exp⁔(1āˆ’r22)⁢(āˆ’(yāˆ’5)xāˆ’5)absent11Ī“2šœ‹1superscriptš‘Ÿ22š‘¦5š‘„5\displaystyle=\left(\begin{array}[]{c}1\\ 1\\ \end{array}\right)+\frac{\Gamma}{2\pi}\exp\left(\frac{1-r^{2}}{2}\right)\left(% \begin{array}[]{c}-(y-5)\\ x-5\\ \end{array}\right)= ( start_ARRAY start_ROW start_CELL 1 end_CELL end_ROW start_ROW start_CELL 1 end_CELL end_ROW end_ARRAY ) + divide start_ARG roman_Ī“ end_ARG start_ARG 2 italic_Ļ€ end_ARG roman_exp ( divide start_ARG 1 - italic_r start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG 2 end_ARG ) ( start_ARRAY start_ROW start_CELL - ( italic_y - 5 ) end_CELL end_ROW start_ROW start_CELL italic_x - 5 end_CELL end_ROW end_ARRAY ) (124)
T0⁢(x,y):=p0⁢(x,y)ρ0⁢(x,y)assignsubscriptš‘‡0š‘„š‘¦subscriptš‘0š‘„š‘¦subscriptšœŒ0š‘„š‘¦\displaystyle T_{0}(x,y):=\frac{p_{0}(x,y)}{\rho_{0}(x,y)}italic_T start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) := divide start_ARG italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) end_ARG start_ARG italic_ρ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) end_ARG =1āˆ’(Ī³āˆ’1)⁢Γ28⁢γ⁢π2⁢exp⁔(1āˆ’r2)absent1š›¾1superscriptĪ“28š›¾superscriptšœ‹21superscriptš‘Ÿ2\displaystyle=1-\frac{(\gamma-1)\Gamma^{2}}{8\gamma\pi^{2}}\exp(1-r^{2})= 1 - divide start_ARG ( italic_γ - 1 ) roman_Ī“ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG 8 italic_γ italic_Ļ€ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG roman_exp ( 1 - italic_r start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) (125)
rš‘Ÿ\displaystyle ritalic_r :=(xāˆ’5)2+(yāˆ’5)2assignabsentsuperscriptš‘„52superscriptš‘¦52\displaystyle:=\sqrt{(x-5)^{2}+(y-5)^{2}}:= square-root start_ARG ( italic_x - 5 ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_y - 5 ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG (126)

with the exact solution being advection with speed (1,1)11(1,1)( 1 , 1 ). However, this time, the pressure is not constant. Ī“=5Ī“5\Gamma=5roman_Ī“ = 5 is used, as well as a periodic domain of [0,10]2superscript0102[0,10]^{2}[ 0 , 10 ] start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT and a final time of t=10š‘”10t=10italic_t = 10, after which the vortex is back where it started from. The errors on different grids are shown in Figure 4. One observes a convergence that is dominated by third order, which starts to deviate slightly towards finer grids.

Refer to caption
Refer to caption
Figure 4: Convergence study for the moving vortex for different grid sizes NƗNš‘š‘N\times Nitalic_N Ɨ italic_N. Left: Errors of the point values on edges. Right: Errors of the averages.

4.2 Spherical shock tube

Next, the performance of the method is assessed on flows with discontinuities. The first one is the spherical version of the Sod shock tube, i.e.

ρ0⁢(x,y)subscriptšœŒ0š‘„š‘¦\displaystyle\rho_{0}(x,y)italic_ρ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) ={1r<0.30.125elseabsentcases1š‘Ÿ0.30.125else\displaystyle=\begin{cases}1&r<0.3\\ 0.125&\text{else}\end{cases}= { start_ROW start_CELL 1 end_CELL start_CELL italic_r < 0.3 end_CELL end_ROW start_ROW start_CELL 0.125 end_CELL start_CELL else end_CELL end_ROW p0⁢(x,y)subscriptš‘0š‘„š‘¦\displaystyle p_{0}(x,y)italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) ={1r<0.30.1elseabsentcases1š‘Ÿ0.30.1else\displaystyle=\begin{cases}1&r<0.3\\ 0.1&\text{else}\end{cases}= { start_ROW start_CELL 1 end_CELL start_CELL italic_r < 0.3 end_CELL end_ROW start_ROW start_CELL 0.1 end_CELL start_CELL else end_CELL end_ROW šÆ0⁢(x,y)=0subscriptšÆ0š‘„š‘¦0\displaystyle\mathbf{v}_{0}(x,y)=0bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) = 0 (127)

Without bound preserving limiting, this test fails; with it, the limiting actually is activated only in the first two time steps (along the initial discontinuity). The results are shown in Fig. 5. One observes some moderate oscillations and some scatter at the contact discontinuity. Part of it might be due to the imprint generated by the limiting at initial time.

Refer to caption
Refer to caption
Figure 5: Scatter plots for the spherical Sod shock tube. Left: 100Ɨ100100100100\times 100100 Ɨ 100 cells. Right: 200Ɨ200200200200\times 200200 Ɨ 200 cells.

4.3 Multi-dimensional Riemann problems

Next, some multi-dimensional Riemann problems from [LL98] are used to assess the ability of the method to cope with more complex interactions between different wave families. The Riemann problems are set up such that outside the interaction region they result in a shock or a simple wave only. In fact, this is well-known to be a difficult situation for numerical methods. As is explained in Section 15.8.4 of [LeV02], whatever the numerical flux used to evolve a discontinuity between two values joined by, say, a Rankine-Hugoniot curve, the very first time step endows the cells in the vicinity with (Δ⁢tĪ”š‘”\Delta troman_Ī” italic_t-dependent) values that are no longer on this curve in general. Thus, the second time step creates waves of all families that propagate away as spurious artifacts. These waves are clearly visible in many simulation results of problems from [LL98] in the literature, and they of course extend into the interaction region. Another reason for their presence is that the initial values given in [LL98] fulfill the jump conditions only to a precision of about 10āˆ’3superscript10310^{-3}10 start_POSTSUPERSCRIPT - 3 end_POSTSUPERSCRIPT.

A selection of multi-d Riemann problems is presented here (Figure 6). The number of grid cells is only half (in each direction) of what [LL98] use. One observes that the features of the interaction region are resolved sharply. Figure 7 shows cuts through the simulation of Configuration 12 for two particular locations, in order to facilitate comparison with [ABK25].

Refer to caption
Refer to caption
Refer to caption
Refer to caption
Refer to caption
Refer to caption
Figure 6: Several configurations from [LL98] solved on a grid with Δ⁢y=Δ⁢x=1/200Ī”š‘¦Ī”š‘„1200\Delta y=\Delta x=1/200roman_Ī” italic_y = roman_Ī” italic_x = 1 / 200. Left to right, top to bottom: Configuration 6, t=0.3š‘”0.3t=0.3italic_t = 0.3; Configuration 11,t=0.3š‘”0.3t=0.3italic_t = 0.3; Configuration 12, t=0.25š‘”0.25t=0.25italic_t = 0.25; Configuration 16 t=0.2š‘”0.2t=0.2italic_t = 0.2; Configuration 13 t=0.3š‘”0.3t=0.3italic_t = 0.3; Configuration 5 t=0.23š‘”0.23t=0.23italic_t = 0.23. Color-coded is density.
Refer to caption
Figure 7: Cut through the solution of Configuration 12.

4.4 Low Mach number vortex

Low Mach number flows are of particular interest since numerical methods for compressible flow often require unreasonable grid refinement to resolve subsonic flow. A simple test case is that of a stationary, divergence-free vortex whose Mach number ϵitalic-ϵ\epsilonitalic_ϵ can be changed by modifying the background pressure, see [BEK+17] for the details of the setup. Results of a first-order Finite Volume method are available e.g. in [Bar21b]. The simulation is evolved until t=1š‘”1t=1italic_t = 1, which is when the quickest part of the flow has completed one revolution, while the sound wave crossing time is about 1/ϵ1italic-ϵ1/\epsilon1 / italic_ϵ. Results for various choices of ϵitalic-ϵ\epsilonitalic_ϵ on a grid of 50Ɨ50505050\times 5050 Ɨ 50 cells are shown in Figure 8. The reader is referred to e.g. [GV99, Del10, Bar21b] for the background on the low Mach number problem. Non low-Mach-compliant methods dissipate the vortex on the sound wave crossing time, while low-Mach-compliant methods do so on an ϵitalic-ϵ\epsilonitalic_ϵ-independent time scale in the limit ϵ→0→italic-ϵ0\epsilon\to 0italic_ϵ → 0. This is observed in the experimental results: The diffusion (originating from the advection) is asymptotically independent of ϵitalic-ϵ\epsilonitalic_ϵ. It is to be noted that this result is by no means trivial and that there is a large literature on ā€œfixingā€ Finite Volume methods to achieve this. That Active Flux might be low-Mach-compliant has been observed in [BHKR19] as a consequence of the stationarity-preserving property for linear acoustics, and low Mach compliance has been also experimentally observed in [ABK25] for the semi-discrete Active Flux method.

Refer to caption
Refer to caption
Refer to caption
Refer to caption
Refer to caption
Refer to caption
Figure 8: Numerical results for the stationary divergencefree Gresho vortex at different Mach numbers. From left to right: ϵ=10āˆ’1,10āˆ’2,10āˆ’3italic-ϵsuperscript101superscript102superscript103\epsilon=10^{-1},10^{-2},10^{-3}italic_ϵ = 10 start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT , 10 start_POSTSUPERSCRIPT - 2 end_POSTSUPERSCRIPT , 10 start_POSTSUPERSCRIPT - 3 end_POSTSUPERSCRIPT. Top: Color coded is the magnitude of the velocity. Bottom: Radial scatter plot of the magnitude of the velocity.

4.5 Kelvin-Helmholtz instability

The Kelvin-Helmholtz instability allows to qualitatively assess the numerical diffusion of a method in subsonic conditions, but in a significantly more complex flow than for an isolated, stationary vortex. Methods that are not low-Mach-compliant are usually artificially stabilizing the setup, preventing the formation of any vortices. The relevant aspect of the next tests is to assess the mere fact of vortex formation. If the initial vorticity is concentrated on a line, then the evolution of the vortices cannot be reasonably studied in the inviscid setting anyway. However, the results can still be compared across different methods in order to qualitatively assess the amount of numerical diffusion. This is the purpose of the test in Section 4.5.2 where the instability is triggered by the passage of a sound wave. The test in Section 4.5.1 has smooth initial vorticity, and therefore until a certain time a well-defined time evolution to which numerical methods converge upon mesh refinement ([LAB+24]).

4.5.1 Smooth shear flow

The initial data are as follows ([LAB+24]):

ρ0⁢(x,y)subscriptšœŒ0š‘„š‘¦\displaystyle\rho_{0}(x,y)italic_ρ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) :=γ+R⁢(1āˆ’2⁢η⁢(y))assignabsentš›¾š‘…12šœ‚š‘¦\displaystyle:=\gamma+R(1-2\eta(y)):= italic_γ + italic_R ( 1 - 2 italic_Ī· ( italic_y ) ) p0⁢(x,y)subscriptš‘0š‘„š‘¦\displaystyle p_{0}(x,y)italic_p start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) :=1assignabsent1\displaystyle:=1:= 1 (128)
vy,0⁢(x,y)subscriptš‘£š‘¦0š‘„š‘¦\displaystyle v_{y,0}(x,y)italic_v start_POSTSUBSCRIPT italic_y , 0 end_POSTSUBSCRIPT ( italic_x , italic_y ) :=Γ⁢M⁢sin⁔(2⁢π⁢x)assignabsentš›æš‘€2šœ‹š‘„\displaystyle:=\delta M\sin(2\pi x):= italic_Ī“ italic_M roman_sin ( 2 italic_Ļ€ italic_x ) vx,0subscriptš‘£š‘„0\displaystyle v_{x,0}italic_v start_POSTSUBSCRIPT italic_x , 0 end_POSTSUBSCRIPT :=M⁢(1āˆ’2⁢η⁢(y))assignabsentš‘€12šœ‚š‘¦\displaystyle:=M(1-2\eta(y)):= italic_M ( 1 - 2 italic_Ī· ( italic_y ) ) (129)

with

η⁢(y)šœ‚š‘¦\displaystyle\eta(y)italic_Ī· ( italic_y ) :={12⁢(1+sin⁔(16⁢π⁢(y+14)))āˆ’932≤y<āˆ’7321āˆ’732≤y<73212⁢(1āˆ’sin⁔(16⁢π⁢(yāˆ’14)))732≤y<9320elseassignabsentcases12116šœ‹š‘¦14932š‘¦7321732š‘¦73212116šœ‹š‘¦14732š‘¦9320else\displaystyle:=\begin{cases}\frac{1}{2}\left(1+\sin\left(16\pi\left(y+\frac{1}% {4}\right)\right)\right)&-\frac{9}{32}\leq y<-\frac{7}{32}\\ 1&-\frac{7}{32}\leq y<\frac{7}{32}\\ \frac{1}{2}\left(1-\sin\left(16\pi\left(y-\frac{1}{4}\right)\right)\right)&% \frac{7}{32}\leq y<\frac{9}{32}\\ 0&\text{else}\end{cases}:= { start_ROW start_CELL divide start_ARG 1 end_ARG start_ARG 2 end_ARG ( 1 + roman_sin ( 16 italic_Ļ€ ( italic_y + divide start_ARG 1 end_ARG start_ARG 4 end_ARG ) ) ) end_CELL start_CELL - divide start_ARG 9 end_ARG start_ARG 32 end_ARG ≤ italic_y < - divide start_ARG 7 end_ARG start_ARG 32 end_ARG end_CELL end_ROW start_ROW start_CELL 1 end_CELL start_CELL - divide start_ARG 7 end_ARG start_ARG 32 end_ARG ≤ italic_y < divide start_ARG 7 end_ARG start_ARG 32 end_ARG end_CELL end_ROW start_ROW start_CELL divide start_ARG 1 end_ARG start_ARG 2 end_ARG ( 1 - roman_sin ( 16 italic_Ļ€ ( italic_y - divide start_ARG 1 end_ARG start_ARG 4 end_ARG ) ) ) end_CELL start_CELL divide start_ARG 7 end_ARG start_ARG 32 end_ARG ≤ italic_y < divide start_ARG 9 end_ARG start_ARG 32 end_ARG end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL else end_CELL end_ROW (130)

Here, R=10āˆ’3š‘…superscript103R=10^{-3}italic_R = 10 start_POSTSUPERSCRIPT - 3 end_POSTSUPERSCRIPT and Ī“=0.1š›æ0.1\delta=0.1italic_Ī“ = 0.1. Mš‘€Mitalic_M is a parameter governing the Mach number of the flow, chosen here as M=0.01š‘€0.01M=0.01italic_M = 0.01. The setup is considered on a grid covering [0,2]Ɨ[āˆ’12,12]021212[0,2]\times[-\frac{1}{2},\frac{1}{2}][ 0 , 2 ] Ɨ [ - divide start_ARG 1 end_ARG start_ARG 2 end_ARG , divide start_ARG 1 end_ARG start_ARG 2 end_ARG ] subject to periodic boundaries until a final time of 0.8/M0.8š‘€0.8/M0.8 / italic_M. Figure 9 shows the results on several different grids. One observes that the new method is able to resolve well the development of the vortices (see [LAB+24] for a comparison with other methods). For low resolution, some spurious features on the interface away from the vortices are visible, which are common among many methods and sometimes even manifest themselves as secondary, spurious vortices. This is not the case here and the features disappear upon mesh refinement.

Refer to caption
Refer to caption
Refer to caption
Figure 9: Smooth shear flows on different grids. Top to bottom: 64Ɨ32643264\times 3264 Ɨ 32, 128Ɨ6412864128\times 64128 Ɨ 64, 256Ɨ128256128256\times 128256 Ɨ 128

4.5.2 Instability triggered by the passage of a sound wave

Another type of a Kelvin-Helmholtz instability is a test case proposed in [MRKG03], as a way to assess the ability of the numerical method to cope with acoustic waves in a nearly incompressible flow. A saw-tooth profile of density is hit by an acoustic wave, which induces a shear flow. Since the initial discontinuity in the density translates into a discontinuity in tangential speed, this setup displays ever more features upon grid refinement. Thus, the actual evolution of the vortices cannot be considered as relevant, however, the time scales at which they appear and their minimal size give qualitative information on the numerical diffusion of the method in the subsonic regime. The initial data are given and explained in detail in [BHKR19]. The reader is also referred to this work for comparison of the results with those of the semi-discrete Active Flux, as well as to the original work [MRKG03] (for comparison with Finite Volume methods) and [PP11] (for comparison with a DG method).

Figure 10 shows the results for a rather coarse grid of 200Ɨ4020040200\times 40200 Ɨ 40 cells. One observes that the vortices of the instability appear much earlier for the present method than for the semi-discrete method from [ABK25], and more homogeneously across the entire interface. This effect appears even stronger if one takes into account the finer resolved grids used in [ABK25]. It thus seems that the present method has significantly less artificial diffusion than its semi-discrete counterpart. Figure 12 shows a simulation on 400Ɨ8040080400\times 80400 Ɨ 80 cells.

Figure 11 shows the results of a simulation that uses the simple, second-order evolution operator (77) for advection, instead of the higher-order version (99) used otherwise. There are visible differences (for the vortex at xā‰ƒ12similar-to-or-equalsš‘„12x\simeq 12italic_x ā‰ƒ 12, for example), yet the overall behaviour is similar.

Refer to caption
Refer to caption
Refer to caption
Refer to caption
Refer to caption
Figure 10: Kelvin-Helmholtz instability triggered by the passage of a sound wave, on a grid of 200Ɨ4020040200\times 40200 Ɨ 40 cells. Density is shown at times t=3,6,9,12,15š‘”3691215t=3,6,9,12,15italic_t = 3 , 6 , 9 , 12 , 15.
Refer to caption
Figure 11: Kelvin-Helmholtz instability triggered by the passage of a sound wave, on a grid of 200Ɨ4020040200\times 40200 Ɨ 40 cells, upon usage of the low-order advection operator (77). Density is shown at time t=15š‘”15t=15italic_t = 15.
Refer to caption
Refer to caption
Refer to caption
Refer to caption
Refer to caption
Figure 12: Same as Figure 10, but on a grid of 400Ɨ8040080400\times 80400 Ɨ 80 cells.

5 Conclusions and outlook

Attempts to develop multi-dimensional Active Flux methods based on evolution operators very quickly reached success for the linear acoustic equations. For the significantly more complicated case of the multi-dimensional Euler equations, several suggestions exist. The main decisions to take in their design, and hence the main differences between existing approaches are whether to use splitting into advection and acoustics (yes), whether to use evolution operators that are exact for the corresponding linearized problems (yes) and whether to use operators that all are sufficiently high-order accurate in time (no) – the terms in brackets indicating the decisions taken in the present work. In practice, the latter question needs to be answered by taking into account the (probably) significant computational effort associated to a fully third-order evolution operator, and the ability to answer it in the affirmative depends on whether it is at all possible to find this operator. Unfortunately, it does not seem to be currently the case, even though a roadmap was traced in [RMF18]. While these considerations apply to the multi-d Euler equations, and also the acoustic suboperator, they do not apply to the advective sub-operator, which has a much simpler nature. As is shown in the present work it can easily be solved to the required order of accuracy. Concerning its accuracy in space, the method is of third order.

The usage of operators that are exact for linearized problems guarantees von Neumann stability of the method. Moreover, since the low Mach compliance for the Euler equations is linked to stationarity preservation for acoustics, a link between the good results of the present method at low Mach number and the corresponding analysis of stationarity preservation in [BHKR19] can be made immediately. The extensive details of an efficient implementation of the exact evolution operator for linear acoustics presented here for the first time hopefully can serve as a reference in future.

Besides the aspects already mentioned, the current work features an example of point values and the reconstruction in primitive variables, as well as a blending of an a priori and a posteriori bound preservation. The usage of primitive variables simplifies the splitting and the corresponding evolution operators greatly, and in certain situations can result in enhanced accuracy.

Numerical results demonstrate that the new method is at least as able to resolve multi-dimensional Riemann problems as the recently developed semi-discrete Active Flux method ([ABK25]), while it might have less diffusion at least in the subsonic regime. It has a higher maximal CFL.

Future work will be devoted to further comparison between the semi-discrete Active Flux and the one based on evolution operators. Other ways to achieve higher order and the possible associated benefits will be investigated.

References

  • [AB23] Remi Abgrall and Wasilij Barsukow. Extensions of Active Flux to arbitrary order of accuracy. ESAIM: Mathematical Modelling and Numerical Analysis, 57(2):991–1027, 2023.
  • [Abg22] RĆ©mi Abgrall. A combination of Residual Distribution and the Active Flux formulations or a new class of schemes that can combine several writings of the same hyperbolic problem: application to the 1d Euler equations. Communications on Applied Mathematics and Computation, pages 1–33, 2022.
  • [ABK25] RĆ©mi Abgrall, Wasilij Barsukow, and Christian Klingenberg. A semi-discrete Active Flux method for the Euler equations on Cartesian grids. Journal of Scientific Computing, 102(2):36, 2025.
  • [AL24] RĆ©mi Abgrall and Yongle Liu. A new approach for designing well-balanced schemes for the shallow water equations: a combination of conservative and primitive formulations. SIAM Journal on Scientific Computing, 46(6):A3375–A3400, 2024.
  • [Bar21a] Wasilij Barsukow. The active flux scheme for nonlinear problems. Journal of Scientific Computing, 86(1):1–34, 2021.
  • [Bar21b] Wasilij Barsukow. Truly multi-dimensional all-speed schemes for the euler equations on cartesian grids. Journal of Computational Physics, 435:110216, 2021.
  • [BB24] Wasilij Barsukow and Raul Borsche. Implicit active flux methods for linear advection. Journal of Scientific Computing, 98(3):52, 2024.
  • [BEK+17] Wasilij Barsukow, PhilippĀ VF Edelmann, Christian Klingenberg, Fabian Miczek, and FriedrichĀ K Rƶpke. A numerical scheme for the compressible low-Mach number regime of ideal fluid dynamics. Journal of Scientific Computing, 72(2):623–646, 2017.
  • [BHKR19] Wasilij Barsukow, Jonathan Hohm, Christian Klingenberg, and PhilipĀ L Roe. The active flux scheme on Cartesian grids and its low Mach number limit. Journal of Scientific Computing, 81(1):594–622, 2019.
  • [BK22] Wasilij Barsukow and Christian Klingenberg. Exact solution and a truly multidimensional Godunov scheme for the acoustic equations. ESAIM: M2AN, 56(1), 2022.
  • [BKKL24] Wasilij Barsukow, Janina Kern, Christian Klingenberg, and Lisa Lechner. Analysis of the multi-dimensional semi-discrete Active Flux method using the Fourier transform. arXiv preprint arXiv:2412.03477, 2024.
  • [CHK21] Erik Chudzik, Christiane Helzel, and David Kerkmann. The Cartesian Grid Active Flux method: Linear stability and bound preserving limiting. Applied Mathematics and Computation, 393:125501, 2021.
  • [CHLM24] Erik Chudzik, Christiane Helzel, and MĆ”ria LukĆ”ÄovĆ”-Medvid’ovĆ”. Active Flux methods for hyperbolic systems using the method of bicharacteristics. Journal of Scientific Computing, 99(1):16, 2024.
  • [DBK25] Junming Duan, Wasilij Barsukow, and Christian Klingenberg. Active Flux methods for hyperbolic conservation laws—Flux Vector splitting and bound-preservation. SIAM Journal on Scientific Computing, 47(2):A811–A837, 2025.
  • [Del10] StĆ©phane Dellacherie. Analysis of Godunov type schemes applied to the compressible Euler system at low Mach number. Journal of Computational Physics, 229(4):978–1016, 2010.
  • [ER11a] TimothyĀ A Eymann and PhilipĀ L Roe. Active flux schemes. In 49th AIAA Aerospace Science meeting, 2011.
  • [ER11b] TimothyĀ A Eymann and PhilipĀ L Roe. Active flux schemes for systems. In 20th AIAA computational fluid dynamics conference, 2011.
  • [ER13] TimothyĀ A Eymann and PhilipĀ L Roe. Multidimensional active flux schemes. In 21st AIAA computational fluid dynamics conference, 2013.
  • [Fan17] Duoming Fan. On the acoustic component of active flux schemes for nonlinear hyperbolic conservation laws. PhD thesis, University of Michigan, Dissertation, 2017.
  • [FR15] Doreen Fan and PhilipĀ L Roe. Investigations of a new scheme for wave propagation. In 22nd AIAA Computational Fluid Dynamics Conference, page 2449, 2015.
  • [GP16] Jean-Luc Guermond and Bojan Popov. Invariant domains and first-order continuous finite element approximation for hyperbolic systems. SIAM Journal on Numerical Analysis, 54(4):2466–2489, 2016.
  • [GR63] ISĀ Gradshteyn and IMĀ Ryzhik. Tablitsy integralov, summ, ryadov i proyavleniy.—izd. 4-ye pererab. M.: Fizmatgiz, 1963.
  • [GV99] HervĆ© Guillard and CĆ©cile Viozat. On the behaviour of upwind schemes in the low Mach number limit. Computers & fluids, 28(1):63–86, 1999.
  • [Haj21] Hennes Hajduk. Monolithic convex limiting in discontinuous galerkin discretizations of hyperbolic conservation laws. Computers & Mathematics with Applications, 87:120–138, 2021.
  • [HKS19] Christiane Helzel, David Kerkmann, and Leonardo Scandurra. A new ADER method inspired by the active flux method. Journal of Scientific Computing, 80(3):1463–1497, 2019.
  • [HS99] Changqing Hu and Chi-Wang Shu. Weighted essentially non-oscillatory schemes on triangular meshes. Journal of Computational Physics, 150(1):97–127, 1999.
  • [JS96] Guang-Shan Jiang and Chi-Wang Shu. Efficient implementation of weighted ENO schemes. Journal of computational physics, 126(1):202–228, 1996.
  • [KLT12] Dmitri Kuzmin, Rainald Lƶhner, and Stefan Turek, editors. Flux-Corrected Transport: Principles, Algorithms, and Applications. Scientific Computation. Springer Netherlands, Dordrecht, 2012.
  • [Kuz20] Dmitri Kuzmin. Monolithic convex limiting for continuous finite element discretizations of hyperbolic conservation laws. Computer Methods in Applied Mechanics and Engineering, 361:112804, April 2020.
  • [LAB+24] Giovanni Leidi, RĀ Andrassy, Wasilij Barsukow, JĀ Higl, PhilippĀ VF Edelmann, and FriedrichĀ K Rƶpke. Performance of high-order godunov-type methods in simulations of astrophysical low mach number flows. Astronomy & Astrophysics, 686:A34, 2024.
  • [LeV02] RandallĀ J LeVeque. Finite volume methods for hyperbolic problems, volumeĀ 31. Cambridge University Press, 2002.
  • [LL98] PeterĀ D Lax and Xu-Dong Liu. Solution of two-dimensional riemann problems of gas dynamics by positive schemes. SIAM Journal on Scientific Computing, 19(2):319–340, 1998.
  • [Mae17] Jungyeoul Maeng. On the advective component of active flux schemes for nonlinear hyperbolic conservation laws. PhD thesis, University of Michigan, Dissertation, 2017.
  • [MRKG03] C-D Munz, Sabine Roller, Rupert Klein, and KarlĀ J Geratz. The extension of incompressible flow solvers to the weakly compressible regime. Computers & Fluids, 32(2):173–196, 2003.
  • [PP11] Jaime Peraire and Per-Olof Persson. High-order discontinuous Galerkin methods for CFD. In Adaptive high-order methods in computational fluid dynamics, pages 119–152. World Scientific, 2011.
  • [PS96] Benoit Perthame and Chi-Wang Shu. On positivity preserving finite volume schemes for euler equations. Numerische Mathematik, 73:119–130, 1996.
  • [RMF18] PhilipĀ L Roe, Jungyeoul Maeng, and Doreen Fan. Comparing active flux and Discontinuous Galerkin methods for compressible flow. In 2018 AIAA Aerospace Sciences Meeting, page 0836, 2018.
  • [Roe17] Philip Roe. Multidimensional upwinding. Handbook of Numerical Analysis, 18:53–80, 2017.
  • [Roe21] Philip Roe. Designing CFD methods for bandwidth—a physical approach. Computers & Fluids, 214:104774, 2021.
  • [Vil19] FranƧois Vilar. A posteriori correction of high-order discontinuous galerkin scheme through subcell finite volume formulation and flux reconstruction. Journal of Computational Physics, 387:245–279, 2019.
  • [vL77] Bram van Leer. Towards the ultimate conservative difference scheme. IV. A new approach to numerical convection. Journal of computational physics, 23(3):276–299, 1977.

Appendix A Spherical means

The acoustic evolution operator involves spherical means of the initial data, on which certain differential operators act. Apart from the usual spherical mean of a scalar function, for vector-valued functions there exist additional spherical means of interest that involve the unit normal š§=(cos⁔φ⁢sin⁔ϑsin⁔φ⁢sin⁔ϑcos⁔ϑ)š§šœ‘italic-Ļ‘šœ‘italic-Ļ‘italic-Ļ‘\mathbf{n}=\left(\begin{array}[]{c}\cos\varphi\sin\vartheta\\ \sin\varphi\sin\vartheta\\ \cos\vartheta\\ \end{array}\right)bold_n = ( start_ARRAY start_ROW start_CELL roman_cos italic_φ roman_sin italic_Ļ‘ end_CELL end_ROW start_ROW start_CELL roman_sin italic_φ roman_sin italic_Ļ‘ end_CELL end_ROW start_ROW start_CELL roman_cos italic_Ļ‘ end_CELL end_ROW end_ARRAY ). For integration over the angular coordinates in three spatial dimensions, d⁢Ω:=d⁢φ⁢d⁢ϑ⁢sin⁔ϑassigndĪ©dšœ‘ditalic-Ļ‘italic-Ļ‘\mathrm{d}\Omega:=\mathrm{d}\varphi\mathrm{d}\vartheta\sin\varthetaroman_d roman_Ī© := roman_d italic_φ roman_d italic_Ļ‘ roman_sin italic_Ļ‘ is used occasionally as an abbreviation.

A.1 General definitions

Definition A.1.

Consider a scalar-valued function f:ā„3ā†’ā„:š‘“ā†’superscriptā„3ā„f\colon\mathbb{R}^{3}\to\mathbb{R}italic_f : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT → roman_ā„ and a vector valued function šÆ:ā„3ā†’ā„3:šÆā†’superscriptā„3superscriptā„3\mathbf{v}\colon\mathbb{R}^{3}\to\mathbb{R}^{3}bold_v : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT → roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT, šÆ=(v1,…,vn)šÆsubscriptš‘£1…subscriptš‘£š‘›\mathbf{v}=(v_{1},\ldots,v_{n})bold_v = ( italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , … , italic_v start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT ).

  1. i.

    The spherical mean M⁢[f]:ā„3Ć—ā„0+ā†’ā„:š‘€delimited-[]š‘“ā†’superscriptā„3subscriptsuperscriptā„0ā„M[f]\colon\mathbb{R}^{3}\times\mathbb{R}^{+}_{0}\to\mathbb{R}italic_M [ italic_f ] : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT → roman_ā„ of fš‘“fitalic_f is

    M⁢[f]⁢(š±,r)š‘€delimited-[]š‘“š±š‘Ÿ\displaystyle M[f](\mathbf{x},r)italic_M [ italic_f ] ( bold_x , italic_r ) :=14ā¢Ļ€ā¢āˆ«S2dš²ā¢f⁢(š±+rā¢š²)assignabsent14šœ‹subscriptsuperscriptš‘†2differential-dš²š‘“š±š‘Ÿš²\displaystyle:=\frac{1}{4\pi}\int_{S^{2}}\mathrm{d}\mathbf{y}\,f(\mathbf{x}+r% \mathbf{y}):= divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_POSTSUBSCRIPT roman_d bold_y italic_f ( bold_x + italic_r bold_y ) (131)
  2. ii.

    The spherical mean M⁢[šÆ]:ā„3Ć—ā„0+ā†’ā„3:š‘€delimited-[]šÆā†’superscriptā„3subscriptsuperscriptā„0superscriptā„3M[\mathbf{v}]\colon\mathbb{R}^{3}\times\mathbb{R}^{+}_{0}\to\mathbb{R}^{3}italic_M [ bold_v ] : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT → roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT of a vector-valued function šÆšÆ\mathbf{v}bold_v, is defined componentwise:

    M⁢[šÆ]⁢(š±,r):=(M⁢[v1]⁢(š±,r),…,M⁢[vn]⁢(š±,r))assignš‘€delimited-[]šÆš±š‘Ÿš‘€delimited-[]subscriptš‘£1š±š‘Ÿā€¦š‘€delimited-[]subscriptš‘£š‘›š±š‘Ÿ\displaystyle M[\mathbf{v}](\mathbf{x},r):=\left(M[v_{1}](\mathbf{x},r),\ldots% ,M[v_{n}](\mathbf{x},r)\right)italic_M [ bold_v ] ( bold_x , italic_r ) := ( italic_M [ italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ] ( bold_x , italic_r ) , … , italic_M [ italic_v start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT ] ( bold_x , italic_r ) ) (132)

    In components, this can be expressed as M⁢[šÆ]i=M⁢[vi]š‘€subscriptdelimited-[]šÆš‘–š‘€delimited-[]subscriptš‘£š‘–M[\mathbf{v}]_{i}=M[v_{i}]italic_M [ bold_v ] start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = italic_M [ italic_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ].

  3. iii.

    The spherical mean M⁢[š§ā¢f]:ā„3Ć—ā„0+ā†’ā„3:š‘€delimited-[]š§š‘“ā†’superscriptā„3subscriptsuperscriptā„0superscriptā„3M[\mathbf{n}f]\colon\mathbb{R}^{3}\times\mathbb{R}^{+}_{0}\to\mathbb{R}^{3}italic_M [ bold_n italic_f ] : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT → roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT of fš‘“fitalic_f is

    M⁢[š§ā¢f]⁢(š±,r)š‘€delimited-[]š§š‘“š±š‘Ÿ\displaystyle M[\mathbf{n}f](\mathbf{x},r)italic_M [ bold_n italic_f ] ( bold_x , italic_r ) :=14ā¢Ļ€ā¢āˆ«S2dš²ā¢š²ā¢f⁢(š±+rā¢š²)assignabsent14šœ‹subscriptsuperscriptš‘†2differential-dš²š²š‘“š±š‘Ÿš²\displaystyle:=\frac{1}{4\pi}\int_{S^{2}}\mathrm{d}\mathbf{y}\,\mathbf{y}f(% \mathbf{x}+r\mathbf{y}):= divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_POSTSUBSCRIPT roman_d bold_y bold_y italic_f ( bold_x + italic_r bold_y ) (133)
  4. iv.

    The spherical mean M⁢[š§ā‹…šÆ]:ā„3Ć—ā„0+ā†’ā„:š‘€delimited-[]ā‹…š§šÆā†’superscriptā„3subscriptsuperscriptā„0ā„M[\mathbf{n}\cdot\mathbf{v}]\colon\mathbb{R}^{3}\times\mathbb{R}^{+}_{0}\to% \mathbb{R}italic_M [ bold_n ā‹… bold_v ] : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT → roman_ā„ of šÆšÆ\mathbf{v}bold_v is

    M⁢[š§ā‹…šÆ]⁢(š±,r):=14ā¢Ļ€ā¢āˆ«S2dš²ā¢š²ā‹…šÆā¢(š±+rā¢š²)assignš‘€delimited-[]ā‹…š§šÆš±š‘Ÿ14šœ‹subscriptsuperscriptš‘†2ā‹…differential-dš²š²šÆš±š‘Ÿš²\displaystyle M[\mathbf{n}\cdot\mathbf{v}](\mathbf{x},r):=\frac{1}{4\pi}\int_{% S^{2}}\mathrm{d}\mathbf{y}\,\mathbf{y}\cdot\mathbf{v}(\mathbf{x}+r\mathbf{y})italic_M [ bold_n ā‹… bold_v ] ( bold_x , italic_r ) := divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_POSTSUBSCRIPT roman_d bold_y bold_y ā‹… bold_v ( bold_x + italic_r bold_y ) (134)
  5. v.

    The spherical mean M⁢[š§ā¢(š§ā‹…šÆ)]:ā„3Ć—ā„0+ā†’ā„3:š‘€delimited-[]š§ā‹…š§šÆā†’superscriptā„3subscriptsuperscriptā„0superscriptā„3M[\mathbf{n}(\mathbf{n}\cdot\mathbf{v})]\colon\mathbb{R}^{3}\times\mathbb{R}^{% +}_{0}\to\mathbb{R}^{3}italic_M [ bold_n ( bold_n ā‹… bold_v ) ] : roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT Ɨ roman_ā„ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT → roman_ā„ start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT of šÆšÆ\mathbf{v}bold_v is

    M⁢[š§ā¢(š§ā‹…šÆ)]⁢(š±,r):=14ā¢Ļ€ā¢āˆ«S2dš²ā¢š²ā¢(š²ā‹…šÆā¢(š±+rā¢š²))assignš‘€delimited-[]š§ā‹…š§šÆš±š‘Ÿ14šœ‹subscriptsuperscriptš‘†2differential-dš²š²ā‹…š²šÆš±š‘Ÿš²\displaystyle M[\mathbf{n}(\mathbf{n}\cdot\mathbf{v})](\mathbf{x},r):=\frac{1}% {4\pi}\int_{S^{2}}\mathrm{d}\mathbf{y}\,\mathbf{y}(\mathbf{y}\cdot\mathbf{v}(% \mathbf{x}+r\mathbf{y}))italic_M [ bold_n ( bold_n ā‹… bold_v ) ] ( bold_x , italic_r ) := divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_POSTSUBSCRIPT roman_d bold_y bold_y ( bold_y ā‹… bold_v ( bold_x + italic_r bold_y ) ) (135)

Observe that the normalization is such that M⁢[1]=1š‘€delimited-[]11M[1]=1italic_M [ 1 ] = 1. For actual computations, the spherical mean is best expressed in spherical coordiantes, e.g.

M⁢[f]⁢(š±,r)š‘€delimited-[]š‘“š±š‘Ÿ\displaystyle M[f](\mathbf{x},r)italic_M [ italic_f ] ( bold_x , italic_r ) =14ā¢Ļ€ā¢āˆ«02⁢πdĻ†ā¢āˆ«0Ļ€dϑ⁢sin⁔ϑ⁢f⁢(x+r⁢cos⁔φ⁢sin⁔ϑ,y+r⁢sin⁔φ⁢sin⁔ϑ,z+r⁢cos⁔ϑ)absent14šœ‹superscriptsubscript02šœ‹differential-dšœ‘superscriptsubscript0šœ‹differential-ditalic-Ļ‘italic-Ļ‘š‘“š‘„š‘Ÿšœ‘italic-Ļ‘š‘¦š‘Ÿšœ‘italic-Ļ‘š‘§š‘Ÿitalic-Ļ‘\displaystyle=\frac{1}{4\pi}\int_{0}^{2\pi}\mathrm{d}\varphi\int_{0}^{\pi}% \mathrm{d}\vartheta\,\sin\vartheta\,f(x+r\cos\varphi\sin\vartheta,y+r\sin% \varphi\sin\vartheta,z+r\cos\vartheta)= divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ roman_sin italic_Ļ‘ italic_f ( italic_x + italic_r roman_cos italic_φ roman_sin italic_Ļ‘ , italic_y + italic_r roman_sin italic_φ roman_sin italic_Ļ‘ , italic_z + italic_r roman_cos italic_Ļ‘ ) (136)
M⁢[š§ā¢f]⁢(š±,r)š‘€delimited-[]š§š‘“š±š‘Ÿ\displaystyle M[\mathbf{n}f](\mathbf{x},r)italic_M [ bold_n italic_f ] ( bold_x , italic_r ) =14ā¢Ļ€ā¢āˆ«02⁢πdĻ†ā¢āˆ«0Ļ€dϑ⁢(cos⁔φ⁢sin⁔ϑsin⁔φ⁢sin⁔ϑcos⁔ϑ)⁢sin⁔ϑ⁢f⁢(x+r⁢cos⁔φ⁢sin⁔ϑ,y+r⁢sin⁔φ⁢sin⁔ϑ,z+r⁢cos⁔ϑ)absent14šœ‹superscriptsubscript02šœ‹differential-dšœ‘superscriptsubscript0šœ‹differential-ditalic-Ļ‘šœ‘italic-Ļ‘šœ‘italic-Ļ‘italic-Ļ‘italic-Ļ‘š‘“š‘„š‘Ÿšœ‘italic-Ļ‘š‘¦š‘Ÿšœ‘italic-Ļ‘š‘§š‘Ÿitalic-Ļ‘\displaystyle=\frac{1}{4\pi}\int_{0}^{2\pi}\mathrm{d}\varphi\int_{0}^{\pi}% \mathrm{d}\vartheta\,\left(\begin{array}[]{c}\cos\varphi\sin\vartheta\\ \sin\varphi\sin\vartheta\\ \cos\vartheta\\ \end{array}\right)\sin\vartheta\,f(x+r\cos\varphi\sin\vartheta,y+r\sin\varphi% \sin\vartheta,z+r\cos\vartheta)= divide start_ARG 1 end_ARG start_ARG 4 italic_Ļ€ end_ARG ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ ( start_ARRAY start_ROW start_CELL roman_cos italic_φ roman_sin italic_Ļ‘ end_CELL end_ROW start_ROW start_CELL roman_sin italic_φ roman_sin italic_Ļ‘ end_CELL end_ROW start_ROW start_CELL roman_cos italic_Ļ‘ end_CELL end_ROW end_ARRAY ) roman_sin italic_Ļ‘ italic_f ( italic_x + italic_r roman_cos italic_φ roman_sin italic_Ļ‘ , italic_y + italic_r roman_sin italic_φ roman_sin italic_Ļ‘ , italic_z + italic_r roman_cos italic_Ļ‘ ) (140)

etc. The definition for a spherical mean over a smaller angular domain is analogous.

A.2 Spherical means in two spatial dimensions

On two-dimensional domains, integration over subsets of the full domain of Ļ†šœ‘\varphiitalic_φ are of interest (because the data might be piecewise defined).

Definition A.2.

The angular domain W=[φmin,φmax)Ɨ[0,Ļ€]š‘Šsubscriptšœ‘minsubscriptšœ‘max0šœ‹W=[\varphi_{\text{min}},\varphi_{\text{max}})\times[0,\pi]italic_W = [ italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT ) Ɨ [ 0 , italic_Ļ€ ] is called a wedge WāŠ‚S2š‘Šsuperscriptš‘†2W\subset S^{2}italic_W āŠ‚ italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT. Spherical means whose (φ,Ļ‘)šœ‘italic-Ļ‘(\varphi,\vartheta)( italic_φ , italic_Ļ‘ ) integration domain is Wš‘ŠWitalic_W are denoted by MWsuperscriptš‘€š‘ŠM^{W}italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT:

MW⁢[f]⁢(š±,r)superscriptš‘€š‘Šdelimited-[]š‘“š±š‘Ÿ\displaystyle M^{W}[f](\mathbf{x},r)italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ italic_f ] ( bold_x , italic_r ) :=12⁢(φmaxāˆ’Ļ†min)ā¢āˆ«Ļ†minφmaxdĻ†ā¢āˆ«0Ļ€dϑ⁢sin⁔ϑ⁢f⁢(x+r⁢cos⁔φ⁢sin⁔ϑ,y+r⁢sin⁔φ⁢sin⁔ϑ)assignabsent12subscriptšœ‘maxsubscriptšœ‘minsuperscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptsubscript0šœ‹differential-ditalic-Ļ‘italic-Ļ‘š‘“š‘„š‘Ÿšœ‘italic-Ļ‘š‘¦š‘Ÿšœ‘italic-Ļ‘\displaystyle:=\frac{1}{2(\varphi_{\text{max}}-\varphi_{\text{min}})}\int_{% \varphi_{\text{min}}}^{\varphi_{\text{max}}}\mathrm{d}\varphi\int_{0}^{\pi}% \mathrm{d}\vartheta\,\sin\vartheta\,f(x+r\cos\varphi\sin\vartheta,y+r\sin% \varphi\sin\vartheta):= divide start_ARG 1 end_ARG start_ARG 2 ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_ARG ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ roman_sin italic_Ļ‘ italic_f ( italic_x + italic_r roman_cos italic_φ roman_sin italic_Ļ‘ , italic_y + italic_r roman_sin italic_φ roman_sin italic_Ļ‘ ) (141)

with f:ā„2ā†’ā„:š‘“ā†’superscriptā„2ā„f:\mathbb{R}^{2}\to\mathbb{R}italic_f : roman_ā„ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT → roman_ā„. An analogous definition holds for other types of spherical means such as MW⁢[š§ā¢f]superscriptš‘€š‘Šdelimited-[]š§š‘“M^{W}[\mathbf{n}f]italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ bold_n italic_f ].

Remark A.1.

Observe that it only makes sense to define MW⁢[f]superscriptš‘€š‘Šdelimited-[]š‘“M^{W}[f]italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ italic_f ] for fš‘“fitalic_f that do not depend on zš‘§zitalic_z.

Remark A.2.

In two spatial dimensions it is natural to only consider the first two components of š§š§\mathbf{n}bold_n. This will not be made explicit in the notation. This is consistent, since for any fš‘“fitalic_f that does not depend on zš‘§zitalic_z,

MW⁢[š§ā¢f]zsuperscriptš‘€š‘Šsubscriptdelimited-[]š§š‘“š‘§\displaystyle M^{W}[\mathbf{n}f]_{z}italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ bold_n italic_f ] start_POSTSUBSCRIPT italic_z end_POSTSUBSCRIPT =12⁢(φmaxāˆ’Ļ†min)ā¢āˆ«Ļ†minφmaxdĻ†ā¢āˆ«0Ļ€dϑ⁢sin⁔ϑ⁢cos⁔ϑ⁢f⁢(x+r⁢cos⁔φ⁢sin⁔ϑ,y+r⁢sin⁔φ⁢sin⁔ϑ)absent12subscriptšœ‘maxsubscriptšœ‘minsuperscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptsubscript0šœ‹differential-ditalic-Ļ‘italic-Ļ‘italic-Ļ‘š‘“š‘„š‘Ÿšœ‘italic-Ļ‘š‘¦š‘Ÿšœ‘italic-Ļ‘\displaystyle=\frac{1}{2(\varphi_{\text{max}}-\varphi_{\text{min}})}\int_{% \varphi_{\text{min}}}^{\varphi_{\text{max}}}\mathrm{d}\varphi\int_{0}^{\pi}% \mathrm{d}\vartheta\,\sin\vartheta\cos\vartheta\,f(x+r\cos\varphi\sin\vartheta% ,y+r\sin\varphi\sin\vartheta)= divide start_ARG 1 end_ARG start_ARG 2 ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_ARG ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ roman_sin italic_Ļ‘ roman_cos italic_Ļ‘ italic_f ( italic_x + italic_r roman_cos italic_φ roman_sin italic_Ļ‘ , italic_y + italic_r roman_sin italic_φ roman_sin italic_Ļ‘ ) (142)
=c:=cos⁔ϑ⁢12⁢(φmaxāˆ’Ļ†min)ā¢āˆ«Ļ†minφmaxdĻ†ā¢āˆ«āˆ’11dc⁢c⁢f⁢(x+r⁢cos⁔φ⁢1āˆ’c2,y+r⁢sin⁔φ⁢1āˆ’c2)assignš‘italic-Ļ‘12subscriptšœ‘maxsubscriptšœ‘minsuperscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptsubscript11differential-dš‘š‘š‘“š‘„š‘Ÿšœ‘1superscriptš‘2š‘¦š‘Ÿšœ‘1superscriptš‘2\displaystyle\overset{c:=\cos\vartheta}{=}\frac{1}{2(\varphi_{\text{max}}-% \varphi_{\text{min}})}\int_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}% \mathrm{d}\varphi\int_{-1}^{1}\mathrm{d}c\,c\,f(x+r\cos\varphi\sqrt{1-c^{2}},y% +r\sin\varphi\sqrt{1-c^{2}})\ start_OVERACCENT italic_c := roman_cos italic_Ļ‘ end_OVERACCENT start_ARG = end_ARG divide start_ARG 1 end_ARG start_ARG 2 ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_ARG ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT - 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT roman_d italic_c italic_c italic_f ( italic_x + italic_r roman_cos italic_φ square-root start_ARG 1 - italic_c start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG , italic_y + italic_r roman_sin italic_φ square-root start_ARG 1 - italic_c start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG ) =0absent0\displaystyle=0= 0 (143)

because an antisymmetric function is integrated over a symmetric interval.

The normalization MW⁢[1]=1superscriptš‘€š‘Šdelimited-[]11M^{W}[1]=1italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ 1 ] = 1 is easily confirmed:

∫WāŠ‚S2dš²=āˆ«Ļ†minφmaxdĻ†ā¢āˆ«0Ļ€dϑ⁢sin⁔ϑ=(φmaxāˆ’Ļ†min)ā¢āˆ«āˆ’11d⁢(cos⁔ϑ)=2⁢(φmaxāˆ’Ļ†min)subscriptš‘Šsuperscriptš‘†2differential-dš²superscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptsubscript0šœ‹differential-ditalic-Ļ‘italic-Ļ‘subscriptšœ‘maxsubscriptšœ‘minsuperscriptsubscript11ditalic-Ļ‘2subscriptšœ‘maxsubscriptšœ‘min\displaystyle\int_{W\subset S^{2}}\mathrm{d}\mathbf{y}=\int_{\varphi_{\text{% min}}}^{\varphi_{\text{max}}}\mathrm{d}\varphi\int_{0}^{\pi}\mathrm{d}% \vartheta\,\sin\vartheta=(\varphi_{\text{max}}-\varphi_{\text{min}})\int_{-1}^% {1}\mathrm{d}(\cos\vartheta)=2(\varphi_{\text{max}}-\varphi_{\text{min}})∫ start_POSTSUBSCRIPT italic_W āŠ‚ italic_S start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_POSTSUBSCRIPT roman_d bold_y = ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ roman_sin italic_Ļ‘ = ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) ∫ start_POSTSUBSCRIPT - 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT roman_d ( roman_cos italic_Ļ‘ ) = 2 ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) (144)

A.3 Spherical means for polynomial data in two space dimensions

In principle, it is possible to evaluate everything analytically. However, in particular for angular domains that are not the entire sphere, the expressions become complicated. Here, some formulae are given that allow to (pre)compute the expressions exactly for polynomial initial data in 2 spatial dimensions.

For polynomial initial data, the key object to compute therefore is the spherical mean

MW⁢[nxα⁢nyβ⁢xa⁢yb]superscriptš‘€š‘Šdelimited-[]superscriptsubscriptš‘›š‘„š›¼superscriptsubscriptš‘›š‘¦š›½superscriptš‘„š‘Žsuperscriptš‘¦š‘\displaystyle M^{W}[n_{x}^{\alpha}n_{y}^{\beta}x^{a}y^{b}]italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ italic_n start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ] (145)

A.3.1 Integration over ϑitalic-ϑ\varthetaitalic_ϑ

In the following we compute the spherical mean of a polynomial function in two spatial dimensions. For polynomial functions, the dependence on Ļ‘italic-Ļ‘\varthetaitalic_Ļ‘ will be of the form sina⁔ϑsuperscriptš‘Žitalic-Ļ‘\sin^{a}\varthetaroman_sin start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_Ļ‘, which justifies the following definition.

Definition A.3.

Denote by Ī·a:=∫0Ļ€dϑ⁢sina⁔ϑassignsubscriptšœ‚š‘Žsuperscriptsubscript0šœ‹differential-ditalic-Ļ‘superscriptš‘Žitalic-Ļ‘\displaystyle\eta_{a}:=\int_{0}^{\pi}\mathrm{d}\vartheta\sin^{a}\varthetaitalic_Ī· start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT := ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ roman_sin start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_Ļ‘.

Theorem A.1 ([GR63], 3.621 (3. and 4.)).

One has

Ī·a=π⁢Γ⁢(a+12)Γ⁢(a+22)=(aāˆ’1)!!a!!ā‹…{Ļ€a>0Ā even2a>0Ā oddsubscriptšœ‚š‘Žšœ‹Ī“š‘Ž12Ī“š‘Ž22ā‹…double-factorialš‘Ž1double-factorialš‘Žcasesšœ‹a>0Ā even2a>0Ā odd\displaystyle\eta_{a}=\sqrt{\pi}\frac{\Gamma\left(\frac{a+1}{2}\right)}{\Gamma% \left(\frac{a+2}{2}\right)}=\frac{(a-1)!!}{a!!}\cdot\begin{cases}\pi&\text{$a>% 0$ even}\\ 2&\text{$a>0$ odd}\end{cases}italic_Ī· start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT = square-root start_ARG italic_Ļ€ end_ARG divide start_ARG roman_Ī“ ( divide start_ARG italic_a + 1 end_ARG start_ARG 2 end_ARG ) end_ARG start_ARG roman_Ī“ ( divide start_ARG italic_a + 2 end_ARG start_ARG 2 end_ARG ) end_ARG = divide start_ARG ( italic_a - 1 ) !! end_ARG start_ARG italic_a !! end_ARG ā‹… { start_ROW start_CELL italic_Ļ€ end_CELL start_CELL italic_a > 0 even end_CELL end_ROW start_ROW start_CELL 2 end_CELL start_CELL italic_a > 0 odd end_CELL end_ROW (146)

where the double factorial is defined as

A!!:={A⁢(Aāˆ’2)⁢(Aāˆ’4)⁢⋯⁢4ā‹…2AĀ evenA⁢(Aāˆ’2)⁢(Aāˆ’4)⁢⋯⁢3ā‹…1AĀ oddassigndouble-factorialš“casesā‹…š“š“2š“4⋯42AĀ evenā‹…š“š“2š“4⋯31AĀ odd\displaystyle A!!:=\begin{cases}A(A-2)(A-4)\cdots 4\cdot 2&\text{$A$ even}\\ A(A-2)(A-4)\cdots 3\cdot 1&\text{$A$ odd}\end{cases}italic_A !! := { start_ROW start_CELL italic_A ( italic_A - 2 ) ( italic_A - 4 ) ⋯ 4 ā‹… 2 end_CELL start_CELL italic_A even end_CELL end_ROW start_ROW start_CELL italic_A ( italic_A - 2 ) ( italic_A - 4 ) ⋯ 3 ā‹… 1 end_CELL start_CELL italic_A odd end_CELL end_ROW (147)

This means that (Ī·a)a=0,1,…=Ļ€,2,Ļ€2,43,3⁢π8,1615,5⁢π16,3235,…subscriptsubscriptšœ‚š‘Žš‘Ž01ā€¦šœ‹2šœ‹2433šœ‹816155šœ‹163235…(\eta_{a})_{a=0,1,\ldots}=\pi,2,\frac{\pi}{2},\frac{4}{3},\frac{3\pi}{8},\frac% {16}{15},\frac{5\pi}{16},\frac{32}{35},\ldots( italic_Ī· start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ) start_POSTSUBSCRIPT italic_a = 0 , 1 , … end_POSTSUBSCRIPT = italic_Ļ€ , 2 , divide start_ARG italic_Ļ€ end_ARG start_ARG 2 end_ARG , divide start_ARG 4 end_ARG start_ARG 3 end_ARG , divide start_ARG 3 italic_Ļ€ end_ARG start_ARG 8 end_ARG , divide start_ARG 16 end_ARG start_ARG 15 end_ARG , divide start_ARG 5 italic_Ļ€ end_ARG start_ARG 16 end_ARG , divide start_ARG 32 end_ARG start_ARG 35 end_ARG , …. Below, we will need the special case

Ī·i+j+1=(i+j)!!(i+j+1)!!ā‹…{Ļ€i+j+1Ā even2elsesubscriptšœ‚š‘–š‘—1ā‹…double-factorialš‘–š‘—double-factorialš‘–š‘—1casesšœ‹i+j+1Ā even2else\displaystyle\eta_{i+j+1}=\frac{(i+j)!!}{(i+j+1)!!}\cdot\begin{cases}\pi&\text% {$i+j+1$ even}\\ 2&\text{else}\end{cases}italic_Ī· start_POSTSUBSCRIPT italic_i + italic_j + 1 end_POSTSUBSCRIPT = divide start_ARG ( italic_i + italic_j ) !! end_ARG start_ARG ( italic_i + italic_j + 1 ) !! end_ARG ā‹… { start_ROW start_CELL italic_Ļ€ end_CELL start_CELL italic_i + italic_j + 1 even end_CELL end_ROW start_ROW start_CELL 2 end_CELL start_CELL else end_CELL end_ROW (148)

A.3.2 Integration over Ļ†šœ‘\varphiitalic_φ

Definition A.4.

Denote by μi⁢jW:=āˆ«Ļ†minφmaxdφ⁢cosi⁔φ⁢sinj⁔φassignsubscriptsuperscriptšœ‡š‘Šš‘–š‘—superscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptš‘–šœ‘superscriptš‘—šœ‘\displaystyle\mu^{W}_{ij}:=\int_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}% \mathrm{d}\varphi\cos^{i}\varphi\sin^{j}\varphiitalic_μ start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT := ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ roman_cos start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT italic_φ roman_sin start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT italic_φ.

Theorem A.2.

We have

μi⁢jWsubscriptsuperscriptšœ‡š‘Šš‘–š‘—\displaystyle\mu^{W}_{ij}italic_μ start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT =12i+jā¢āˆ‘m=0iāˆ‘n=0j(im)⁢(jn)⁢(āˆ’1)n+jabsent1superscript2š‘–š‘—superscriptsubscriptš‘š0š‘–superscriptsubscriptš‘›0š‘—binomialš‘–š‘šbinomialš‘—š‘›superscript1š‘›š‘—\displaystyle=\frac{1}{2^{i+j}}\sum_{m=0}^{i}\sum_{n=0}^{j}{i\choose m}{j% \choose n}(-1)^{n+j}= divide start_ARG 1 end_ARG start_ARG 2 start_POSTSUPERSCRIPT italic_i + italic_j end_POSTSUPERSCRIPT end_ARG āˆ‘ start_POSTSUBSCRIPT italic_m = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT italic_n = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT ( binomial start_ARG italic_i end_ARG start_ARG italic_m end_ARG ) ( binomial start_ARG italic_j end_ARG start_ARG italic_n end_ARG ) ( - 1 ) start_POSTSUPERSCRIPT italic_n + italic_j end_POSTSUPERSCRIPT (149)
Ɨ{(āˆ’1)j/2⁢(φmaxāˆ’Ļ†min)i+j=2⁢(m+n),j⁢ even(āˆ’1)j/2⁢sin⁔([i+jāˆ’2⁢māˆ’2⁢n]⁢φ)i+jāˆ’2⁢māˆ’2⁢n|φminφmaxi+j≠2⁢(m+n),j⁢ even(āˆ’1)jāˆ’12⁢cos⁔([i+jāˆ’2⁢māˆ’2⁢n]⁢φ)i+jāˆ’2⁢māˆ’2⁢n|φminφmaxi+j≠2⁢(m+n),j⁢ odd0elseabsentcasessuperscript1š‘—2subscriptšœ‘maxsubscriptšœ‘minš‘–š‘—2š‘šš‘›š‘—Ā evenotherwiseotherwiseevaluated-atsuperscript1š‘—2delimited-[]š‘–š‘—2š‘š2š‘›šœ‘š‘–š‘—2š‘š2š‘›subscriptšœ‘minsubscriptšœ‘maxš‘–š‘—2š‘šš‘›š‘—Ā evenevaluated-atsuperscript1š‘—12delimited-[]š‘–š‘—2š‘š2š‘›šœ‘š‘–š‘—2š‘š2š‘›subscriptšœ‘minsubscriptšœ‘maxš‘–š‘—2š‘šš‘›š‘—Ā odd0else\displaystyle\phantom{mmmm}\times\begin{cases}(-1)^{j/2}(\varphi_{\text{max}}-% \varphi_{\text{min}})&i+j=2(m+n),j\text{ even}\\ &\\ \displaystyle\left.\frac{(-1)^{j/2}\sin([i+j-2m-2n]\varphi)}{i+j-2m-2n}\right|% _{\varphi_{\text{min}}}^{\varphi_{\text{max}}}&i+j\neq 2(m+n),j\text{ even}\\ \displaystyle\left.\frac{(-1)^{\frac{j-1}{2}}\cos([i+j-2m-2n]\varphi)}{i+j-2m-% 2n}\right|_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}&i+j\neq 2(m+n),j\text% { odd}\\ 0&\text{else}\end{cases}Ɨ { start_ROW start_CELL ( - 1 ) start_POSTSUPERSCRIPT italic_j / 2 end_POSTSUPERSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_CELL start_CELL italic_i + italic_j = 2 ( italic_m + italic_n ) , italic_j even end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL divide start_ARG ( - 1 ) start_POSTSUPERSCRIPT italic_j / 2 end_POSTSUPERSCRIPT roman_sin ( [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ ) end_ARG start_ARG italic_i + italic_j - 2 italic_m - 2 italic_n end_ARG | start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_CELL start_CELL italic_i + italic_j ≠ 2 ( italic_m + italic_n ) , italic_j even end_CELL end_ROW start_ROW start_CELL divide start_ARG ( - 1 ) start_POSTSUPERSCRIPT divide start_ARG italic_j - 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT roman_cos ( [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ ) end_ARG start_ARG italic_i + italic_j - 2 italic_m - 2 italic_n end_ARG | start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_CELL start_CELL italic_i + italic_j ≠ 2 ( italic_m + italic_n ) , italic_j odd end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL else end_CELL end_ROW (150)

with the notation f⁢(φ)|φminφmax=f⁢(φmax)āˆ’f⁢(φmin)evaluated-atš‘“šœ‘subscriptšœ‘minsubscriptšœ‘maxš‘“subscriptšœ‘maxš‘“subscriptšœ‘minf(\varphi)\Big{|}_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}=f(\varphi_{% \text{max}})-f(\varphi_{\text{min}})italic_f ( italic_φ ) | start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT = italic_f ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT ) - italic_f ( italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ).

Proof.

The integral can be evaluated to

μi⁢jW=āˆ«Ļ†minφmaxdφ⁢cosi⁔φ⁢sinj⁔φsuperscriptsubscriptšœ‡š‘–š‘—š‘Šsuperscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptš‘–šœ‘superscriptš‘—šœ‘\displaystyle\mu_{ij}^{W}=\int_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}% \mathrm{d}\varphi\cos^{i}\varphi\sin^{j}\varphiitalic_μ start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT = ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ roman_cos start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT italic_φ roman_sin start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT italic_φ =āˆ«Ļ†minφmaxdφ⁢(eš•šā¢Ļ†āˆ’eāˆ’š•šā¢Ļ†2ā¢š•š)j⁢(eš•šā¢Ļ†+eāˆ’š•šā¢Ļ†2)iabsentsuperscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptsuperscripteš•ššœ‘superscripteš•ššœ‘2š•šš‘—superscriptsuperscripteš•ššœ‘superscripteš•ššœ‘2š‘–\displaystyle=\int_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}\mathrm{d}% \varphi\left(\frac{\mathrm{e}^{\mathbb{i}\varphi}-\mathrm{e}^{-\mathbb{i}% \varphi}}{2\mathbb{i}}\right)^{j}\left(\frac{\mathrm{e}^{\mathbb{i}\varphi}+% \mathrm{e}^{-\mathbb{i}\varphi}}{2}\right)^{i}= ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ ( divide start_ARG roman_e start_POSTSUPERSCRIPT roman_š•š italic_φ end_POSTSUPERSCRIPT - roman_e start_POSTSUPERSCRIPT - roman_š•š italic_φ end_POSTSUPERSCRIPT end_ARG start_ARG 2 roman_š•š end_ARG ) start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT ( divide start_ARG roman_e start_POSTSUPERSCRIPT roman_š•š italic_φ end_POSTSUPERSCRIPT + roman_e start_POSTSUPERSCRIPT - roman_š•š italic_φ end_POSTSUPERSCRIPT end_ARG start_ARG 2 end_ARG ) start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT (151)
=12i+jā¢š•šjā¢āˆ«Ļ†minφmaxdφ⁢eš•šā¢(i+j)⁢φ⁢(1āˆ’eāˆ’2ā¢š•šā¢Ļ†)j⁢(1+eāˆ’2ā¢š•šā¢Ļ†)iabsent1superscript2š‘–š‘—superscriptš•šš‘—superscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscripteš•šš‘–š‘—šœ‘superscript1superscripte2š•ššœ‘š‘—superscript1superscripte2š•ššœ‘š‘–\displaystyle=\frac{1}{2^{i+j}\mathbb{i}^{j}}\int_{\varphi_{\text{min}}}^{% \varphi_{\text{max}}}\mathrm{d}\varphi\,\,\mathrm{e}^{\mathbb{i}(i+j)\varphi}(% 1-\mathrm{e}^{-2\mathbb{i}\varphi})^{j}(1+\mathrm{e}^{-2\mathbb{i}\varphi})^{i}= divide start_ARG 1 end_ARG start_ARG 2 start_POSTSUPERSCRIPT italic_i + italic_j end_POSTSUPERSCRIPT roman_š•š start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT end_ARG ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ roman_e start_POSTSUPERSCRIPT roman_š•š ( italic_i + italic_j ) italic_φ end_POSTSUPERSCRIPT ( 1 - roman_e start_POSTSUPERSCRIPT - 2 roman_š•š italic_φ end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT ( 1 + roman_e start_POSTSUPERSCRIPT - 2 roman_š•š italic_φ end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT (152)
=12i+jā¢š•šjā¢āˆ‘m=0iāˆ‘n=0j(im)⁢(jn)⁢(āˆ’1)nā¢āˆ«Ļ†minφmaxdφ⁢eš•šā¢[i+jāˆ’2⁢māˆ’2⁢n]⁢φabsent1superscript2š‘–š‘—superscriptš•šš‘—superscriptsubscriptš‘š0š‘–superscriptsubscriptš‘›0š‘—binomialš‘–š‘šbinomialš‘—š‘›superscript1š‘›superscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscripteš•šdelimited-[]š‘–š‘—2š‘š2š‘›šœ‘\displaystyle=\frac{1}{2^{i+j}\mathbb{i}^{j}}\sum_{m=0}^{i}\sum_{n=0}^{j}{i% \choose m}{j\choose n}(-1)^{n}\int_{\varphi_{\text{min}}}^{\varphi_{\text{max}% }}\mathrm{d}\varphi\,\,\mathrm{e}^{\mathbb{i}[i+j-2m-2n]\varphi}= divide start_ARG 1 end_ARG start_ARG 2 start_POSTSUPERSCRIPT italic_i + italic_j end_POSTSUPERSCRIPT roman_š•š start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT end_ARG āˆ‘ start_POSTSUBSCRIPT italic_m = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT italic_n = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT ( binomial start_ARG italic_i end_ARG start_ARG italic_m end_ARG ) ( binomial start_ARG italic_j end_ARG start_ARG italic_n end_ARG ) ( - 1 ) start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ roman_e start_POSTSUPERSCRIPT roman_š•š [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ end_POSTSUPERSCRIPT (153)

Now,

āˆ«Ļ†minφmaxdφ⁢eš•šā¢[i+jāˆ’2⁢māˆ’2⁢n]⁢φ={φmaxāˆ’Ļ†mini+jāˆ’2⁢māˆ’2⁢n=0eš•šā¢[i+jāˆ’2⁢māˆ’2⁢n]ā¢Ļ†š•šā¢[i+jāˆ’2⁢māˆ’2⁢n]|φminφmaxelsesuperscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscripteš•šdelimited-[]š‘–š‘—2š‘š2š‘›šœ‘casessubscriptšœ‘maxsubscriptšœ‘minš‘–š‘—2š‘š2š‘›0otherwiseotherwiseevaluated-atsuperscripteš•šdelimited-[]š‘–š‘—2š‘š2š‘›šœ‘š•šdelimited-[]š‘–š‘—2š‘š2š‘›subscriptšœ‘minsubscriptšœ‘maxelse\displaystyle\int_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}\mathrm{d}% \varphi\,\,\mathrm{e}^{\mathbb{i}[i+j-2m-2n]\varphi}=\begin{cases}\varphi_{% \text{max}}-\varphi_{\text{min}}&i+j-2m-2n=0\\ &\\ \left.\displaystyle\frac{\mathrm{e}^{\mathbb{i}[i+j-2m-2n]\varphi}}{\mathbb{i}% [i+j-2m-2n]}\right|_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}&\text{else}% \end{cases}∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ roman_e start_POSTSUPERSCRIPT roman_š•š [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ end_POSTSUPERSCRIPT = { start_ROW start_CELL italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_CELL start_CELL italic_i + italic_j - 2 italic_m - 2 italic_n = 0 end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL divide start_ARG roman_e start_POSTSUPERSCRIPT roman_š•š [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ end_POSTSUPERSCRIPT end_ARG start_ARG roman_š•š [ italic_i + italic_j - 2 italic_m - 2 italic_n ] end_ARG | start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_CELL start_CELL else end_CELL end_ROW (154)

and thus

μi⁢jWsuperscriptsubscriptšœ‡š‘–š‘—š‘Š\displaystyle\mu_{ij}^{W}italic_μ start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT =12i+j⁢(āˆ’1)jā¢āˆ‘m=0iāˆ‘n=0j(im)⁢(jn)⁢(āˆ’1)n⁢{š•šj⁢(φmaxāˆ’Ļ†min)i+jāˆ’2⁢māˆ’2⁢n=0āˆ’š•šj+1⁢eš•šā¢[i+jāˆ’2⁢māˆ’2⁢n]⁢φi+jāˆ’2⁢māˆ’2⁢n|φminφmaxelseabsent1superscript2š‘–š‘—superscript1š‘—superscriptsubscriptš‘š0š‘–superscriptsubscriptš‘›0š‘—binomialš‘–š‘šbinomialš‘—š‘›superscript1š‘›casessuperscriptš•šš‘—subscriptšœ‘maxsubscriptšœ‘minš‘–š‘—2š‘š2š‘›0otherwiseotherwiseevaluated-atsuperscriptš•šš‘—1superscripteš•šdelimited-[]š‘–š‘—2š‘š2š‘›šœ‘š‘–š‘—2š‘š2š‘›subscriptšœ‘minsubscriptšœ‘maxelse\displaystyle=\frac{1}{2^{i+j}(-1)^{j}}\sum_{m=0}^{i}\sum_{n=0}^{j}{i\choose m% }{j\choose n}(-1)^{n}\begin{cases}\mathbb{i}^{j}(\varphi_{\text{max}}-\varphi_% {\text{min}})&i+j-2m-2n=0\\ &\\ \left.\displaystyle-\frac{\mathbb{i}^{j+1}\mathrm{e}^{\mathbb{i}[i+j-2m-2n]% \varphi}}{i+j-2m-2n}\right|_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}&% \text{else}\end{cases}= divide start_ARG 1 end_ARG start_ARG 2 start_POSTSUPERSCRIPT italic_i + italic_j end_POSTSUPERSCRIPT ( - 1 ) start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT end_ARG āˆ‘ start_POSTSUBSCRIPT italic_m = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT italic_n = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT ( binomial start_ARG italic_i end_ARG start_ARG italic_m end_ARG ) ( binomial start_ARG italic_j end_ARG start_ARG italic_n end_ARG ) ( - 1 ) start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT { start_ROW start_CELL roman_š•š start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_CELL start_CELL italic_i + italic_j - 2 italic_m - 2 italic_n = 0 end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL - divide start_ARG roman_š•š start_POSTSUPERSCRIPT italic_j + 1 end_POSTSUPERSCRIPT roman_e start_POSTSUPERSCRIPT roman_š•š [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ end_POSTSUPERSCRIPT end_ARG start_ARG italic_i + italic_j - 2 italic_m - 2 italic_n end_ARG | start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_CELL start_CELL else end_CELL end_ROW (155)

As the integral is real, we only need to include real terms into the sum:

μi⁢jWsuperscriptsubscriptšœ‡š‘–š‘—š‘Š\displaystyle\mu_{ij}^{W}italic_μ start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT =12i+jā¢āˆ‘m=0iāˆ‘n=0j(im)⁢(jn)⁢(āˆ’1)n+jabsent1superscript2š‘–š‘—superscriptsubscriptš‘š0š‘–superscriptsubscriptš‘›0š‘—binomialš‘–š‘šbinomialš‘—š‘›superscript1š‘›š‘—\displaystyle=\frac{1}{2^{i+j}}\sum_{m=0}^{i}\sum_{n=0}^{j}{i\choose m}{j% \choose n}(-1)^{n+j}= divide start_ARG 1 end_ARG start_ARG 2 start_POSTSUPERSCRIPT italic_i + italic_j end_POSTSUPERSCRIPT end_ARG āˆ‘ start_POSTSUBSCRIPT italic_m = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT italic_n = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT ( binomial start_ARG italic_i end_ARG start_ARG italic_m end_ARG ) ( binomial start_ARG italic_j end_ARG start_ARG italic_n end_ARG ) ( - 1 ) start_POSTSUPERSCRIPT italic_n + italic_j end_POSTSUPERSCRIPT (156)
Ɨ{(āˆ’1)j/2⁢(φmaxāˆ’Ļ†min)i+j=2⁢(m+n),j⁢ even(āˆ’1)j/2⁢sin⁔([i+jāˆ’2⁢māˆ’2⁢n]⁢φ)i+jāˆ’2⁢māˆ’2⁢n|φminφmaxi+j≠2⁢(m+n),j⁢ even(āˆ’1)jāˆ’12⁢cos⁔([i+jāˆ’2⁢māˆ’2⁢n]⁢φ)i+jāˆ’2⁢māˆ’2⁢n|φminφmaxi+j≠2⁢(m+n),j⁢ odd0elseabsentcasessuperscript1š‘—2subscriptšœ‘maxsubscriptšœ‘minš‘–š‘—2š‘šš‘›š‘—Ā evenotherwiseotherwiseevaluated-atsuperscript1š‘—2delimited-[]š‘–š‘—2š‘š2š‘›šœ‘š‘–š‘—2š‘š2š‘›subscriptšœ‘minsubscriptšœ‘maxš‘–š‘—2š‘šš‘›š‘—Ā evenevaluated-atsuperscript1š‘—12delimited-[]š‘–š‘—2š‘š2š‘›šœ‘š‘–š‘—2š‘š2š‘›subscriptšœ‘minsubscriptšœ‘maxš‘–š‘—2š‘šš‘›š‘—Ā odd0else\displaystyle\phantom{mmmm}\times\begin{cases}(-1)^{j/2}(\varphi_{\text{max}}-% \varphi_{\text{min}})&i+j=2(m+n),j\text{ even}\\ &\\ \displaystyle\left.\frac{(-1)^{j/2}\sin([i+j-2m-2n]\varphi)}{i+j-2m-2n}\right|% _{\varphi_{\text{min}}}^{\varphi_{\text{max}}}&i+j\neq 2(m+n),j\text{ even}\\ \displaystyle\left.\frac{(-1)^{\frac{j-1}{2}}\cos([i+j-2m-2n]\varphi)}{i+j-2m-% 2n}\right|_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}&i+j\neq 2(m+n),j\text% { odd}\\ 0&\text{else}\end{cases}Ɨ { start_ROW start_CELL ( - 1 ) start_POSTSUPERSCRIPT italic_j / 2 end_POSTSUPERSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_CELL start_CELL italic_i + italic_j = 2 ( italic_m + italic_n ) , italic_j even end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL divide start_ARG ( - 1 ) start_POSTSUPERSCRIPT italic_j / 2 end_POSTSUPERSCRIPT roman_sin ( [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ ) end_ARG start_ARG italic_i + italic_j - 2 italic_m - 2 italic_n end_ARG | start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_CELL start_CELL italic_i + italic_j ≠ 2 ( italic_m + italic_n ) , italic_j even end_CELL end_ROW start_ROW start_CELL divide start_ARG ( - 1 ) start_POSTSUPERSCRIPT divide start_ARG italic_j - 1 end_ARG start_ARG 2 end_ARG end_POSTSUPERSCRIPT roman_cos ( [ italic_i + italic_j - 2 italic_m - 2 italic_n ] italic_φ ) end_ARG start_ARG italic_i + italic_j - 2 italic_m - 2 italic_n end_ARG | start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_CELL start_CELL italic_i + italic_j ≠ 2 ( italic_m + italic_n ) , italic_j odd end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL else end_CELL end_ROW (157)

āˆŽ

The first few values of μi⁢jWsuperscriptsubscriptšœ‡š‘–š‘—š‘Š\mu_{ij}^{W}italic_μ start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT are:

iš‘–iitalic_i jš‘—jitalic_j μi⁢jW⋅Δ⁢φ⋅superscriptsubscriptšœ‡š‘–š‘—š‘ŠĪ”šœ‘\mu_{ij}^{W}\cdot\Delta\varphiitalic_μ start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ā‹… roman_Ī” italic_φ
0 0 Ī”ā¢Ļ†Ī”šœ‘\Delta\varphiroman_Ī” italic_φ
0 1 āˆ’Ī”ā¢cos⁔(φ)Ī”šœ‘-\Delta\cos(\varphi)- roman_Ī” roman_cos ( italic_φ )
0 2 14⁢(āˆ’Ī”ā¢sin⁔(2⁢φ)+2⁢Δ⁢φ)14Ī”2šœ‘2Ī”šœ‘\frac{1}{4}\left(-\Delta\sin(2\varphi)+2\Delta\varphi\right)divide start_ARG 1 end_ARG start_ARG 4 end_ARG ( - roman_Ī” roman_sin ( 2 italic_φ ) + 2 roman_Ī” italic_φ )
1 0 Δ⁢sin⁔(φ)Ī”šœ‘\Delta\sin(\varphi)roman_Ī” roman_sin ( italic_φ )
1 1 āˆ’14⁢Δ⁢cos⁔(2⁢φ)14Ī”2šœ‘-\frac{1}{4}\Delta\cos(2\varphi)- divide start_ARG 1 end_ARG start_ARG 4 end_ARG roman_Ī” roman_cos ( 2 italic_φ )
1 2 14⁢(āˆ’Ī”ā¢sin⁔(3⁢φ)3+Δ⁢sin⁔(φ))14Ī”3šœ‘3Ī”šœ‘\frac{1}{4}\left(-\frac{\Delta\sin(3\varphi)}{3}+\Delta\sin(\varphi)\right)divide start_ARG 1 end_ARG start_ARG 4 end_ARG ( - divide start_ARG roman_Ī” roman_sin ( 3 italic_φ ) end_ARG start_ARG 3 end_ARG + roman_Ī” roman_sin ( italic_φ ) )
2 0 14⁢(Δ⁢sin⁔(2⁢φ)+2⁢Δ⁢φ)14Ī”2šœ‘2Ī”šœ‘\frac{1}{4}\left(\Delta\sin(2\varphi)+2\Delta\varphi\right)divide start_ARG 1 end_ARG start_ARG 4 end_ARG ( roman_Ī” roman_sin ( 2 italic_φ ) + 2 roman_Ī” italic_φ )
2 1 āˆ’14⁢(Δ⁢cos⁔(3⁢φ)3+Δ⁢cos⁔(φ))14Ī”3šœ‘3Ī”šœ‘-\frac{1}{4}\left(\frac{\Delta\cos(3\varphi)}{3}+\Delta\cos(\varphi)\right)- divide start_ARG 1 end_ARG start_ARG 4 end_ARG ( divide start_ARG roman_Ī” roman_cos ( 3 italic_φ ) end_ARG start_ARG 3 end_ARG + roman_Ī” roman_cos ( italic_φ ) )
2 2 116⁢(āˆ’Ī”ā¢sin⁔(4⁢φ)2+2⁢Δ⁢φ)116Ī”4šœ‘22Ī”šœ‘\frac{1}{16}\left(-\frac{\Delta\sin(4\varphi)}{2}+2\Delta\varphi\right)divide start_ARG 1 end_ARG start_ARG 16 end_ARG ( - divide start_ARG roman_Ī” roman_sin ( 4 italic_φ ) end_ARG start_ARG 2 end_ARG + 2 roman_Ī” italic_φ )

Here, Δ⁢φ=φmaxāˆ’Ļ†minĪ”šœ‘subscriptšœ‘maxsubscriptšœ‘min\Delta\varphi=\varphi_{\text{max}}-\varphi_{\text{min}}roman_Ī” italic_φ = italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT and Δ⁢sin⁔(n⁢φ)=sin⁔(n⁢φmax)āˆ’sin⁔(n⁢φmin)Ī”š‘›šœ‘š‘›subscriptšœ‘maxš‘›subscriptšœ‘min\Delta\sin(n\varphi)=\sin(n\varphi_{\text{max}})-\sin(n\varphi_{\text{min}})roman_Ī” roman_sin ( italic_n italic_φ ) = roman_sin ( italic_n italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT ) - roman_sin ( italic_n italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) etc.

A.3.3 Assembling the spherical mean

By linearity and by the assumption that we are concerned with the two-dimensional case only it is sufficient to compute the spherical mean at š±=(x,y,0)š±š‘„š‘¦0\mathbf{x}=(x,y,0)bold_x = ( italic_x , italic_y , 0 ) of

nxα⁢nyβ⁢xa⁢ybsuperscriptsubscriptš‘›š‘„š›¼superscriptsubscriptš‘›š‘¦š›½superscriptš‘„š‘Žsuperscriptš‘¦š‘\displaystyle n_{x}^{\alpha}n_{y}^{\beta}x^{a}y^{b}italic_n start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT (158)

Therefore it is necessary to evaluate the following spherical mean

MW⁢[nxα⁢nyβ⁢xa⁢yb]⁢(š±,r)superscriptš‘€š‘Šdelimited-[]superscriptsubscriptš‘›š‘„š›¼superscriptsubscriptš‘›š‘¦š›½superscriptš‘„š‘Žsuperscriptš‘¦š‘š±š‘Ÿ\displaystyle M^{W}[n_{x}^{\alpha}n_{y}^{\beta}x^{a}y^{b}](\mathbf{x},r)italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ italic_n start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ] ( bold_x , italic_r ) =12⁢(φmaxāˆ’Ļ†min)absent12subscriptšœ‘maxsubscriptšœ‘min\displaystyle=\frac{1}{2(\varphi_{\text{max}}-\varphi_{\text{min}})}= divide start_ARG 1 end_ARG start_ARG 2 ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_ARG (159)
ā‹…āˆ«Ļ†minφmaxdĻ†āˆ«0Ļ€dĻ‘sinĻ‘(cosφsinĻ‘)α(sinφsinĻ‘)β(x+rcosφsinĻ‘)a(y+rsinφsinĻ‘)b\displaystyle\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!% \!\!\!\!\!\cdot\int_{\varphi_{\text{min}}}^{\varphi_{\text{max}}}\mathrm{d}% \varphi\int_{0}^{\pi}\mathrm{d}\vartheta\,\,\sin\vartheta(\cos\varphi\sin% \vartheta)^{\alpha}(\sin\varphi\sin\vartheta)^{\beta}(x+r\cos\varphi\sin% \vartheta)^{a}(y+r\sin\varphi\sin\vartheta)^{b}ā‹… ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ roman_sin italic_Ļ‘ ( roman_cos italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT ( roman_sin italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT ( italic_x + italic_r roman_cos italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT ( italic_y + italic_r roman_sin italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT
=12⁢(φmaxāˆ’Ļ†min)ā¢āˆ«Ļ†minφmaxdĻ†ā¢āˆ«0Ļ€dϑ⁢sin1+α+β⁔ϑ⁢cosα⁔φ⁢sinβ⁔φ⁢(x+r⁢cos⁔φ⁢sin⁔ϑ)a⁢(y+r⁢sin⁔φ⁢sin⁔ϑ)babsent12subscriptšœ‘maxsubscriptšœ‘minsuperscriptsubscriptsubscriptšœ‘minsubscriptšœ‘maxdifferential-dšœ‘superscriptsubscript0šœ‹differential-ditalic-Ļ‘superscript1š›¼š›½italic-Ļ‘superscriptš›¼šœ‘superscriptš›½šœ‘superscriptš‘„š‘Ÿšœ‘italic-Ļ‘š‘Žsuperscriptš‘¦š‘Ÿšœ‘italic-Ļ‘š‘\displaystyle\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!% \!\!\!\!\!=\frac{1}{2(\varphi_{\text{max}}-\varphi_{\text{min}})}\int_{\varphi% _{\text{min}}}^{\varphi_{\text{max}}}\mathrm{d}\varphi\int_{0}^{\pi}\mathrm{d}% \vartheta\,\,\sin^{1+\alpha+\beta}\vartheta\cos^{\alpha}\varphi\sin^{\beta}% \varphi(x+r\cos\varphi\sin\vartheta)^{a}(y+r\sin\varphi\sin\vartheta)^{b}= divide start_ARG 1 end_ARG start_ARG 2 ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ) end_ARG ∫ start_POSTSUBSCRIPT italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT end_POSTSUPERSCRIPT roman_d italic_φ ∫ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_Ļ€ end_POSTSUPERSCRIPT roman_d italic_Ļ‘ roman_sin start_POSTSUPERSCRIPT 1 + italic_α + italic_β end_POSTSUPERSCRIPT italic_Ļ‘ roman_cos start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT italic_φ roman_sin start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT italic_φ ( italic_x + italic_r roman_cos italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT ( italic_y + italic_r roman_sin italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT (160)

Rewrite now

(x+r⁢cos⁔φ⁢sin⁔ϑ)a⁢(y+r⁢sin⁔φ⁢sin⁔ϑ)b=āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢raāˆ’k+bāˆ’ā„“ā¢sinbāˆ’ā„“ā”Ļ†ā¢cosaāˆ’k⁔φ⁢sinaāˆ’k+bāˆ’ā„“ā”Ļ‘superscriptš‘„š‘Ÿšœ‘italic-Ļ‘š‘Žsuperscriptš‘¦š‘Ÿšœ‘italic-Ļ‘š‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘Ÿš‘Žš‘˜š‘ā„“superscriptš‘ā„“šœ‘superscriptš‘Žš‘˜šœ‘superscriptš‘Žš‘˜š‘ā„“italic-Ļ‘\displaystyle(x+r\cos\varphi\sin\vartheta)^{a}(y+r\sin\varphi\sin\vartheta)^{b% }=\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k}{b\choose\ell}x^{k}y^{\ell}r^{a-k% +b-\ell}\sin^{b-\ell}\varphi\cos^{a-k}\varphi\sin^{a-k+b-\ell}\vartheta( italic_x + italic_r roman_cos italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT ( italic_y + italic_r roman_sin italic_φ roman_sin italic_Ļ‘ ) start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT = āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT roman_sin start_POSTSUPERSCRIPT italic_b - roman_ā„“ end_POSTSUPERSCRIPT italic_φ roman_cos start_POSTSUPERSCRIPT italic_a - italic_k end_POSTSUPERSCRIPT italic_φ roman_sin start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT italic_Ļ‘ (161)

This proves the following

Theorem A.3.

With Δ⁢φ=φmaxāˆ’Ļ†minĪ”šœ‘subscriptšœ‘maxsubscriptšœ‘min\Delta\varphi=\varphi_{\text{max}}-\varphi_{\text{min}}roman_Ī” italic_φ = italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT - italic_φ start_POSTSUBSCRIPT min end_POSTSUBSCRIPT, the spherical mean of monomial data reads

MW⁢[nxα⁢nyβ⁢xa⁢yb]⁢(š±,r)superscriptš‘€š‘Šdelimited-[]superscriptsubscriptš‘›š‘„š›¼superscriptsubscriptš‘›š‘¦š›½superscriptš‘„š‘Žsuperscriptš‘¦š‘š±š‘Ÿ\displaystyle M^{W}[n_{x}^{\alpha}n_{y}^{\beta}x^{a}y^{b}](\mathbf{x},r)italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ italic_n start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ] ( bold_x , italic_r ) =āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢raāˆ’k+bāˆ’ā„“ā¢Ī¼a+Ī±āˆ’k,b+Ī²āˆ’ā„“W2⁢Δ⁢φ⁢ηa+Ī±āˆ’k+b+Ī²āˆ’ā„“+1absentsuperscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘Ÿš‘Žš‘˜š‘ā„“subscriptsuperscriptšœ‡š‘Šš‘Žš›¼š‘˜š‘š›½ā„“2Ī”šœ‘subscriptšœ‚š‘Žš›¼š‘˜š‘š›½ā„“1\displaystyle=\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k}{b\choose\ell}x^{k}y^% {\ell}r^{a-k+b-\ell}\frac{\mu^{W}_{a+\alpha-k,b+\beta-\ell}}{2\Delta\varphi}% \eta_{a+\alpha-k+b+\beta-\ell+1}= āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT divide start_ARG italic_μ start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_a + italic_α - italic_k , italic_b + italic_β - roman_ā„“ end_POSTSUBSCRIPT end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG italic_Ī· start_POSTSUBSCRIPT italic_a + italic_α - italic_k + italic_b + italic_β - roman_ā„“ + 1 end_POSTSUBSCRIPT (162)

We rewrite it as

MW⁢[nxα⁢nyβ⁢xa⁢yb]⁢(š±,r)superscriptš‘€š‘Šdelimited-[]superscriptsubscriptš‘›š‘„š›¼superscriptsubscriptš‘›š‘¦š›½superscriptš‘„š‘Žsuperscriptš‘¦š‘š±š‘Ÿ\displaystyle M^{W}[n_{x}^{\alpha}n_{y}^{\beta}x^{a}y^{b}](\mathbf{x},r)italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ italic_n start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ] ( bold_x , italic_r ) =āˆ‘k=0aāˆ‘ā„“=0bxk⁢yℓ⁢raāˆ’k+bāˆ’ā„“absentsuperscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘Ÿš‘Žš‘˜š‘ā„“\displaystyle=\sum_{k=0}^{a}\sum_{\ell=0}^{b}x^{k}y^{\ell}r^{a-k+b-\ell}= āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT (163)

with

Fk,ā„“(a,b,α,β):=(ak)⁢(bā„“)⁢μa+Ī±āˆ’k,b+Ī²āˆ’ā„“W2⁢Δ⁢φ⁢ηa+Ī±āˆ’k+b+Ī²āˆ’ā„“+1assignsubscriptsuperscriptš¹š‘Žš‘š›¼š›½š‘˜ā„“binomialš‘Žš‘˜binomialš‘ā„“subscriptsuperscriptšœ‡š‘Šš‘Žš›¼š‘˜š‘š›½ā„“2Ī”šœ‘subscriptšœ‚š‘Žš›¼š‘˜š‘š›½ā„“1\displaystyle F^{(a,b,\alpha,\beta)}_{k,\ell}:={a\choose k}{b\choose\ell}\frac% {\mu^{W}_{a+\alpha-k,b+\beta-\ell}}{2\Delta\varphi}\eta_{a+\alpha-k+b+\beta-% \ell+1}italic_F start_POSTSUPERSCRIPT ( italic_a , italic_b , italic_α , italic_β ) end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k , roman_ā„“ end_POSTSUBSCRIPT := ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) divide start_ARG italic_μ start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_a + italic_α - italic_k , italic_b + italic_β - roman_ā„“ end_POSTSUBSCRIPT end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG italic_Ī· start_POSTSUBSCRIPT italic_a + italic_α - italic_k + italic_b + italic_β - roman_ā„“ + 1 end_POSTSUBSCRIPT (164)

In particular, if x=y=0š‘„š‘¦0x=y=0italic_x = italic_y = 0, then the formula simplifies to

MW⁢[nxα⁢nyβ⁢xa⁢yb]⁢(0,r)superscriptš‘€š‘Šdelimited-[]superscriptsubscriptš‘›š‘„š›¼superscriptsubscriptš‘›š‘¦š›½superscriptš‘„š‘Žsuperscriptš‘¦š‘0š‘Ÿ\displaystyle M^{W}[n_{x}^{\alpha}n_{y}^{\beta}x^{a}y^{b}](0,r)italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ italic_n start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_α end_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_β end_POSTSUPERSCRIPT italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ] ( 0 , italic_r ) =ra+b⋅μa+α,b+βW2⁢Δ⁢φ⁢ηa+α+b+β+1absentā‹…superscriptš‘Ÿš‘Žš‘subscriptsuperscriptšœ‡š‘Šš‘Žš›¼š‘š›½2Ī”šœ‘subscriptšœ‚š‘Žš›¼š‘š›½1\displaystyle=r^{a+b}\cdot\frac{\mu^{W}_{a+\alpha,b+\beta}}{2\Delta\varphi}% \eta_{a+\alpha+b+\beta+1}= italic_r start_POSTSUPERSCRIPT italic_a + italic_b end_POSTSUPERSCRIPT ā‹… divide start_ARG italic_μ start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_a + italic_α , italic_b + italic_β end_POSTSUBSCRIPT end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG italic_Ī· start_POSTSUBSCRIPT italic_a + italic_α + italic_b + italic_β + 1 end_POSTSUBSCRIPT (165)
Corollary A.1.

If šÆ=(xa⁢yb,0,0)šÆsuperscriptš‘„š‘Žsuperscriptš‘¦š‘00\mathbf{v}=(x^{a}y^{b},0,0)bold_v = ( italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT , 0 , 0 ), then the spherical mean MW⁢[š§ā‹…šÆ]superscriptš‘€š‘Šdelimited-[]ā‹…š§šÆM^{W}[\mathbf{n}\cdot\mathbf{v}]italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ bold_n ā‹… bold_v ] is

MW⁢[š§ā‹…šÆ]superscriptš‘€š‘Šdelimited-[]ā‹…š§šÆ\displaystyle M^{W}[\mathbf{n}\cdot\mathbf{v}]italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ bold_n ā‹… bold_v ] =M⁢[š§ā¢xa⁢yb]xabsentš‘€subscriptdelimited-[]š§superscriptš‘„š‘Žsuperscriptš‘¦š‘š‘„\displaystyle=M[\mathbf{n}x^{a}y^{b}]_{x}= italic_M [ bold_n italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ] start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT (166)
=12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢raāˆ’k+bāˆ’ā„“ā¢Ī¼aāˆ’k+1,bāˆ’ā„“ā¢(φmax,φm⁢i⁢n)⁢ηaāˆ’k+bāˆ’ā„“+2absent12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘Ÿš‘Žš‘˜š‘ā„“subscriptšœ‡š‘Žš‘˜1š‘ā„“subscriptšœ‘maxsubscriptšœ‘š‘šš‘–š‘›subscriptšœ‚š‘Žš‘˜š‘ā„“2\displaystyle=\frac{1}{2\Delta\varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k% }{b\choose\ell}x^{k}y^{\ell}r^{a-k+b-\ell}\mu_{a-k+1,b-\ell}(\varphi_{\text{% max}},\varphi_{min})\eta_{a-k+b-\ell+2}= divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ end_POSTSUBSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT italic_m italic_i italic_n end_POSTSUBSCRIPT ) italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 2 end_POSTSUBSCRIPT (167)

Analogously, if šÆ=(0,xa⁢yb,0)šÆ0superscriptš‘„š‘Žsuperscriptš‘¦š‘0\mathbf{v}=(0,x^{a}y^{b},0)bold_v = ( 0 , italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT , 0 ), then

MW⁢[š§ā‹…šÆ]superscriptš‘€š‘Šdelimited-[]ā‹…š§šÆ\displaystyle M^{W}[\mathbf{n}\cdot\mathbf{v}]italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ bold_n ā‹… bold_v ] =M⁢[š§ā¢xa⁢yb]yabsentš‘€subscriptdelimited-[]š§superscriptš‘„š‘Žsuperscriptš‘¦š‘š‘¦\displaystyle=M[\mathbf{n}x^{a}y^{b}]_{y}= italic_M [ bold_n italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ] start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT (168)
=12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢raāˆ’k+bāˆ’ā„“ā¢Ī¼aāˆ’k,bāˆ’ā„“+1⁢(φmax,φm⁢i⁢n)⁢ηaāˆ’k+bāˆ’ā„“+2absent12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘Ÿš‘Žš‘˜š‘ā„“subscriptšœ‡š‘Žš‘˜š‘ā„“1subscriptšœ‘maxsubscriptšœ‘š‘šš‘–š‘›subscriptšœ‚š‘Žš‘˜š‘ā„“2\displaystyle=\frac{1}{2\Delta\varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k% }{b\choose\ell}x^{k}y^{\ell}r^{a-k+b-\ell}\mu_{a-k,b-\ell+1}(\varphi_{\text{% max}},\varphi_{min})\eta_{a-k+b-\ell+2}= divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT italic_μ start_POSTSUBSCRIPT italic_a - italic_k , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT italic_m italic_i italic_n end_POSTSUBSCRIPT ) italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 2 end_POSTSUBSCRIPT (169)
Corollary A.2.

If šÆ=(xa⁢yb,0,0)šÆsuperscriptš‘„š‘Žsuperscriptš‘¦š‘00\mathbf{v}=(x^{a}y^{b},0,0)bold_v = ( italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT , 0 , 0 ), then the spherical mean M⁢[š§ā¢(š§ā‹…šÆ)]š‘€delimited-[]š§ā‹…š§šÆM[\mathbf{n}(\mathbf{n}\cdot\mathbf{v})]italic_M [ bold_n ( bold_n ā‹… bold_v ) ], restricted to two components, is

MW⁢[š§ā¢(š§ā‹…šÆ)]=12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢raāˆ’k+bāˆ’ā„“ā¢(μaāˆ’k+2,bāˆ’ā„“ā¢(φmax,φm⁢i⁢n)μaāˆ’k+1,bāˆ’ā„“+1⁢(φmax,φm⁢i⁢n))⁢ηaāˆ’k+bāˆ’ā„“+3superscriptš‘€š‘Šdelimited-[]š§ā‹…š§šÆ12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘Ÿš‘Žš‘˜š‘ā„“subscriptšœ‡š‘Žš‘˜2š‘ā„“subscriptšœ‘maxsubscriptšœ‘š‘šš‘–š‘›subscriptšœ‡š‘Žš‘˜1š‘ā„“1subscriptšœ‘maxsubscriptšœ‘š‘šš‘–š‘›subscriptšœ‚š‘Žš‘˜š‘ā„“3\displaystyle M^{W}[\mathbf{n}(\mathbf{n}\cdot\mathbf{v})]=\frac{1}{2\Delta% \varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k}{b\choose\ell}x^{k}y^{\ell}% r^{a-k+b-\ell}\left(\begin{array}[]{c}\mu_{a-k+2,b-\ell}(\varphi_{\text{max}},% \varphi_{min})\\ \mu_{a-k+1,b-\ell+1}(\varphi_{\text{max}},\varphi_{min})\\ \end{array}\right)\eta_{a-k+b-\ell+3}italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ bold_n ( bold_n ā‹… bold_v ) ] = divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 2 , italic_b - roman_ā„“ end_POSTSUBSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT italic_m italic_i italic_n end_POSTSUBSCRIPT ) end_CELL end_ROW start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT italic_m italic_i italic_n end_POSTSUBSCRIPT ) end_CELL end_ROW end_ARRAY ) italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT (172)

If šÆ=(0,xa⁢yb,0)šÆ0superscriptš‘„š‘Žsuperscriptš‘¦š‘0\mathbf{v}=(0,x^{a}y^{b},0)bold_v = ( 0 , italic_x start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT , 0 ), then the spherical mean M⁢[š§ā‹…šÆ]š‘€delimited-[]ā‹…š§šÆM[\mathbf{n}\cdot\mathbf{v}]italic_M [ bold_n ā‹… bold_v ], restricted to two components, is

MW⁢[š§ā¢(š§ā‹…šÆ)]=12ā¢Ī”ā¢Ļ†ā¢āˆ‘k=0aāˆ‘ā„“=0b(ak)⁢(bā„“)⁢xk⁢yℓ⁢raāˆ’k+bāˆ’ā„“ā¢(μaāˆ’k+1,bāˆ’ā„“+1⁢(φmax,φm⁢i⁢n)μaāˆ’k,bāˆ’ā„“+2⁢(φmax,φm⁢i⁢n))⁢ηaāˆ’k+bāˆ’ā„“+3superscriptš‘€š‘Šdelimited-[]š§ā‹…š§šÆ12Ī”šœ‘superscriptsubscriptš‘˜0š‘Žsuperscriptsubscriptā„“0š‘binomialš‘Žš‘˜binomialš‘ā„“superscriptš‘„š‘˜superscriptš‘¦ā„“superscriptš‘Ÿš‘Žš‘˜š‘ā„“subscriptšœ‡š‘Žš‘˜1š‘ā„“1subscriptšœ‘maxsubscriptšœ‘š‘šš‘–š‘›subscriptšœ‡š‘Žš‘˜š‘ā„“2subscriptšœ‘maxsubscriptšœ‘š‘šš‘–š‘›subscriptšœ‚š‘Žš‘˜š‘ā„“3\displaystyle M^{W}[\mathbf{n}(\mathbf{n}\cdot\mathbf{v})]=\frac{1}{2\Delta% \varphi}\sum_{k=0}^{a}\sum_{\ell=0}^{b}{a\choose k}{b\choose\ell}x^{k}y^{\ell}% r^{a-k+b-\ell}\left(\begin{array}[]{c}\mu_{a-k+1,b-\ell+1}(\varphi_{\text{max}% },\varphi_{min})\\ \mu_{a-k,b-\ell+2}(\varphi_{\text{max}},\varphi_{min})\\ \end{array}\right)\eta_{a-k+b-\ell+3}italic_M start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT [ bold_n ( bold_n ā‹… bold_v ) ] = divide start_ARG 1 end_ARG start_ARG 2 roman_Ī” italic_φ end_ARG āˆ‘ start_POSTSUBSCRIPT italic_k = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT āˆ‘ start_POSTSUBSCRIPT roman_ā„“ = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( binomial start_ARG italic_a end_ARG start_ARG italic_k end_ARG ) ( binomial start_ARG italic_b end_ARG start_ARG roman_ā„“ end_ARG ) italic_x start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT italic_y start_POSTSUPERSCRIPT roman_ā„“ end_POSTSUPERSCRIPT italic_r start_POSTSUPERSCRIPT italic_a - italic_k + italic_b - roman_ā„“ end_POSTSUPERSCRIPT ( start_ARRAY start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k + 1 , italic_b - roman_ā„“ + 1 end_POSTSUBSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT italic_m italic_i italic_n end_POSTSUBSCRIPT ) end_CELL end_ROW start_ROW start_CELL italic_μ start_POSTSUBSCRIPT italic_a - italic_k , italic_b - roman_ā„“ + 2 end_POSTSUBSCRIPT ( italic_φ start_POSTSUBSCRIPT max end_POSTSUBSCRIPT , italic_φ start_POSTSUBSCRIPT italic_m italic_i italic_n end_POSTSUBSCRIPT ) end_CELL end_ROW end_ARRAY ) italic_Ī· start_POSTSUBSCRIPT italic_a - italic_k + italic_b - roman_ā„“ + 3 end_POSTSUBSCRIPT (175)

Appendix B Pseudocode implementation of the evolution operator

1FunctionPolynomial[] timeEvolution(FunctionPolynomial[] initial, double[] position, double /*@$\phi_\text{min}$@*/, double /*@$\phi_\text{max}$@*/){
2/*@ This time evolution yields the result as a polynomial in $r$ that needs to be evaluated at $ct$@*/
3
4 FunctionPolynomial[] res = new FunctionPolynomial[initial.length];
5 double fraction = Math.abs(/*@$\phi_\text{max}$@*/ - /*@$\phi_\text{min}$@*/) / 2 / Math.PI;
6
7 FunctionPolynomial R = new FunctionPolynomial(1, 0);
8 R.setCoefficient(1, 0, 1.0); // polynomial rš‘Ÿritalic_r
9
10 /*@$M^W[p_0]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[PRESS], position);
11
12 /*@$M^W[n_x p_0]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[PRESS], position, 1, 0);
13 /*@$M^W[n_y p_0]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[PRESS], position, 0, 1);
14
15 /*@$M^W[u_0]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[XVEL], position);
16 /*@$M^W[v_0]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[YVEL], position);
17
18 /*@$M^W[\vec n \cdot \vec v]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[XVEL], position, 1,0).add(
19 sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[YVEL], position, 0,1) );
20
21 /*@$M^W[n_x (\vec n \cdot \vec v)]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[XVEL], position, 2,0).add(
22 sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[YVEL], position, 1,1) );
23 /*@$M^W[n_y (\vec n \cdot \vec v)]$@*/ = sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[XVEL], position, 1,1).add(
24 sphericalMean(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, initial[YVEL], position, 0,2) );
25
26
27 PPterm = /*@$M^W[p_0]$@*/.mult(R).diffX();
28 PUVterm = (/*@$M^W[\vec n \cdot \vec v]$@*/.mult(R).mult(R).diffX()).divideByX();
29 UPterm = ((/*@$M^W[n_x p_0]$@*/.mult(R).mult(R)).diffX()).divideByX();
30 UUVterm = (((/*@$M^W[n_x (\vec n \cdot \vec v)]$@*/.mult(R).mult(R).mult(R).diffX()
31 ).divideByX().sub(/*@$M^W[u_0]$@*/.mult(R))).diffX()).divideByX().integrateX();
32 VPterm = ((/*@$M^W[n_y p_0]$@*/.mult(R).mult(R)).diffX()).divideByX();
33 VUVterm = (((/*@$M^W[n_y (\vec n \cdot \vec v)]$@*/.mult(R).mult(R).mult(R).diffX()
34 ).divideByX().sub(/*@$M^W[v_0]$@*/.mult(R))).diffX()).divideByX().integrateX();
35
36 res[PRESS] = PPterm.sub(PUVterm).mult(fraction);
37 res[XVEL] = FunctionPolynomial.constantPolynomial(initial[XVEL].eval(position[0], position[1])
38 ).sub(UPterm).add(UUVterm).mult(fraction);
39 res[YVEL] = FunctionPolynomial.constantPolynomial(initial[YVEL].eval(position[0], position[1])
40 ).sub(VPterm).add(VUVterm).mult(fraction);
41
42 return res;
43}
44
45
46FunctionPolynomial sphericalMean(double /*@$\phi_\text{min}$@*/, double /*@$\phi_\text{max}$@*/, FunctionPolynomial /*@$f$@*/, double[] position, int /*@$\alpha$@*/, int /*@$\beta$@*/){
47 /*@ Computes $M^W[n_x^\alpha y^\beta f]$ for polynomial $f$ at @*/position;
48 /*@ Radius $r$ not specified, result of computation is polynomial in $r$ @*/
49 FunctionPolynomial res = new FunctionPolynomial(/*@$f$@*/.degreeX() + /*@$f$@*/.degreeY()); // degree of result
50
51 for (int i = 0; i <= /*@$f$@*/.degreeX(); i++){
52 for (int j = 0; j <= /*@$f$@*/.degreeY(); j++){
53 res = res.add(sphericalMeanMonomial(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, i, j, position, /*@$\alpha$@*/, /*@$\beta$@*/).mult(/*@$f$@*/.getCoefficient(i, j)));
54 }
55 }
56 return res;
57}
58
59
60FunctionPolynomial sphericalMeanMonomial(double /*@$\phi_\text{min}$@*/, double /*@$\phi_\text{max}$@*/, int /*@a@*/, int /*@b@*/, double[] position, int /*@$\alpha$@*/, int /*@$\beta$@*/){
61 /*@ Computes $M^W[n_x^\alpha y^\beta x^a y^b]$ at @*/position;
62 /*@ Radius $r$ not specified, result of computation is polynomial in $r$ @*/
63
64 FunctionPolynomial sphericalMean = new FunctionPolynomial(/*@a@*/ + /*@b@*/); // degree of result
65
66 int phiIntervalIndex = /*@identify the quadrant required (can be passed directly as parameter)@*/
67
68 for (int /*@$k$@*/ = 0; /*@$k$@*/ <= /*@$a$@*/; /*@$k$@*/++){
69 for (int /*@$\ell$@*/ = 0; /*@$\ell$@*/ <= /*@$b$@*/; /*@$\ell$@*/++){
70 sphericalMean.addToCoefficient(/*@$a+b-\ell-k$@*/, 0,
71 factorInsideEvolution[/*@$a$@*/][/*@$b$@*/][/*@$k$@*/][/*@$\ell$@*/][/*@$\alpha$@*/][/*@$\beta$@*/][phiIntervalIndex]*
72 power(position[0], /*@$k$@*/) *
73 power(position[1], /*@$\ell$@*/));
74 }
75 }
76 return sphericalMean;
77}
78
79
80precomputeFactors(double /*@$\phi_\text{min}$@*/, double /*@$\phi_\text{max}$@*/, int phiIntervalIndex){
81 for (int /*@$a$@*/ = 0; /*@$a$@*/ <= /*@$a_\text{max}$@*/; /*@$a$@*/++){
82 for (int /*@$b$@*/ = 0; /*@$b$@*/ <= /*@$b_\text{max}$@*/; /*@$b$@*/++){
83 for (int /*@$k$@*/ = 0; /*@$k$@*/ <= /*@$a$@*/; /*@$k$@*/++){
84 for (int /*@$\ell$@*/ = 0; /*@$\ell$@*/ <= /*@$b$@*/; /*@$\ell$@*/++){
85 for (int /*@$\alpha$@*/ = 0; /*@$\alpha$@*/ <= /*@$\alpha_\text{max}$@*/; /*@$\alpha$@*/++){
86 for (int /*@$\beta$@*/ = 0; /*@$\beta$@*/ <= /*@$\beta_\text{max}$@*/; /*@$\beta$@*/++){
87 factorInsideEvolution[/*@$a$@*/][/*@$b$@*/][/*@$k$@*/][/*@$\ell$@*/][/*@$\alpha$@*/][/*@$\beta$@*/][phiIntervalIndex] =
88 /*@${a \choose k} {b \choose \ell}$@*/ * sphericalMeanIntegrationFactor(/*@$\phi_\text{min}$@*/, /*@$\phi_\text{max}$@*/, /*@$a-k+\alpha$@*/, /*@$b-\ell+\beta$@*/);
89 /*@ This is $F^{(a, b,\alpha,\beta)}_{k,\ell}$. @*/
90 }
91 }
92 }
93 }
94 }
95 }
96}
97
98double sphericalMeanIntegrationFactor(double /*@$\phi_\text{min}$@*/, double /*@$\phi_\text{max}$@*/, int i, int j){
99 /*@ This function computes $\eta_{i+j+1} \mu^W_{ij} / 2 / \Delta \phi$.@*/
100 double secondFactor = 0.0;
101 double factor = 0.0;
102
103 double firstFactor = /*@$(i+j)!!/(i+j+1)!!$@*/;
104 if ((i+j+1) /*@$\mod 2$@*/ == 0){
105 firstFactor *= /*@$\pi$@*/;
106 } else {
107 firstFactor *= 2.0;
108 }
109 /*@ This is $\eta_{i+j+1}$.@*/
110
111
112 for (int /*@$m$@*/ = 0; /*@$m$@*/ <= i; /*@$m$@*/++){
113 for(int /*@$n$@*/ = 0; /*@$n$@*/ <= j; /*@$n$@*/++){
114 factor = /*@${i \choose m} {j \choose n}$@*/;
115 if (/*@$i+j-2m-2n$@*/ == 0){
116 if(/*@$j\mod 2$@*/==0){
117 factor *= /*@$(-1)^{j/2+n} (\phi_\text{max}-\phi_\text{min})$@*/;
118 } else {
119 factor = 0;
120 }
121 } else {
122 factor *= /*@$(-1)^{n+j} / (i+j-2m-2n)$@*/;
123 if(/*@$j\mod 2$@*/==0){
124 factor *= /*@$(-1)^{j/2}(\sin(\phi_\text{max}(i+j-2m-2n))-\sin(\phi_\text{min}(i+j-2m-2n)))$@*/;
125 } else {
126 factor *= /*@$(-1)^{(j-1)/2} (\cos(\phi_\text{max}(i+j-2m-2n))-\cos(\phi_\text{min}(i+j-2m-2n)))$@*/;
127 }
128 }
129 secondFactor += factor;
130 }
131 }
132 secondFactor /= /*@$2^{i+j}$@*/;
133
134 return firstFactor*secondFactor / 2 / (/*@$\phi_\text{max}$@*/ - /*@$\phi_\text{min}$@*/);
135}
ListingĀ 1: Pseudocode implementation of the evolution operator.

The expressions are simplified tremendously through an implementation of polynomial functions; such an implementation is given in the Appendix C as a reference, where the definitions of functions used in the above listings can be found. It is possible to precompute not just some coefficients, but everything that is known a priori. This is best achieved algorithmically by using the previous implementation to compute necessary coefficients:

1precomputeEvolutionCoefficients(){
2 double[][] allPositions = /*@where one will want to evaluate the evolution operator, e.g. the 8 points at the boundary of cell@*/;
3/*@ @*/
4 /*@ Positions are assumed to be in $\left[-\frac{\Delta x}{2}, \frac{\Delta x}{2}\right] \times \left[-\frac{\Delta y}{2}, \frac{\Delta y}{2}\right]$@*/
5
6 evolutionCoefficients = new FunctionPolynomial[3][3][3][allRelativePositions.size()][4][3];
7 /*@ The order is: variable of solution, $a$, $b$, position, quadrant, variable of initial data @*/
8 /*@ A quadrant is the angle between@*/ /*@$\pi$@*//2*angleIndex /*@and@*/ /*@$\pi$@*//2*(angleIndex+1);
9
10 FunctionPolynomial[] initial;
11 int positionIndex;
12
13 for (int q = 0; q <= 2; q++){ // variables u,v,p
14 for (int /*@ a @*/ = 0; /*@ a @*/ <= 2; /*@ a @*/++){
15 for (int /*@ b @*/ = 0; /*@ b @*/ <= 2; /*@ b @*/++){
16 initial = new FunctionPolynomial[3];
17 for (int q2 = 0; q2 <= 2; q2++){ initial[q2] = FunctionPolynomial.ZERO(); }
18 initial[q] = new FunctionPolynomial(2, 2);
19 initial[q].setCoefficient(/*@a@*/, /*@b@*/, 1.0);
20 /*@ The q-th variable is now set to $x^a y^b$@*/
21
22 positionIndex = 0;
23 for (double[] position : allPositions) {
24 for (int angleIndex = 0; angleIndex <= 3; angleIndex++){
25 for (int q2 = 0; q2 <= 2; q2++){ // variables u,v,p
26 evolutionCoefficients[q][/*@a@*/][/*@b@*/][positionIndex][angleIndex][q2] = timeEvolution(initial, position, PI/2*angleIndex, PI/2*(angleIndex+1))[q2];
27 }
28 }
29 positionIndex++;
30 }
31 }
32 }
33 }
34}
35
36double[] timeEvolutionUsingPrecomputed(FunctionPolynomial[] initial, double[] position, double /*@$t$@*/, double /*@$\phi_\text{min}$@*/, double /*@$\phi_\text{max}$@*/){
37 /*@ positions is assumed to be in $\left[-\frac{\Delta x}{2}, \frac{\Delta x}{2}\right] \times \left[-\frac{\Delta y}{2}, \frac{\Delta y}{2}\right]$@*/
38 double[] res = new double[initial.length];
39 int positionIndex = /*@identify the index corresponding to@*/ position /*@(can be passed directly as parameter)@*/;
40 int[] angleIndices = /*@identify the quadrants required (one or several; can be passed directly as parameter)@*/
41
42 for (int q = 0; q <= 2; q++){ // variables u,v,p
43 for (int /*@$a$@*/ = 0; /*@$a$@*/ <= 2; /*@$a$@*/++){
44 for (int /*@$b$@*/ = 0; /*@$b$@*/ <= 2; /*@$b$@*/++){
45 for (int angleIndex = 0; angleIndex < angleIndices.length; angleIndex++){
46 for (int q2 = 0; q2 <= 2; q2++){ // variables u,v,p
47 res[q2] += evolutionCoefficients[q][/*@$a$@*/][/*@$b$@*/][positionIndex][angleIndices[angleIndex]][q2].eval(/*@$ct$@*/) * initial[q].getCoefficient(/*@$a$@*/, /*@$b$@*/);
48 }
49 }
50 }
51 }
52 }
53 return res;
54}
ListingĀ 2: Pseudocode implementation of the optimized evolution operator.
1if (edge.isVertical()){
2 double[] leftValue = timeEvolutionUsingPrecomputed(edge.leftCell().reconstruction(), new double[]{0.5*dx, 0.0}, /*@$\Delta t$@*/, /*@$\pi$@*//2, 3.0*/*@$\pi$@*//2);
3 double[] rightValue = timeEvolutionUsingPrecomputed(edge.rightCell().reconstruction(), new double[]{-0.5*dx, 0.0}, /*@$\Delta t$@*/, -/*@$\pi$@*//2, /*@$\pi$@*//2);
4 return leftValue + rightValue;
5} else if (edge.isHorizontal(){
6 double[] bottomValue = timeEvolutionUsingPrecomputed(edge.bottomCell().reconstruction(), new double[]{0.0, 0.5*dy}, /*@$\Delta t$@*/, -/*@$\pi$@*/, 0);
7 double[] topValue = timeEvolutionUsingPrecomputed(edge.topCell().reconstruction(), new double[]{0.0, -0.5*dy}, /*@$\Delta t$@*/, 0, /*@$\pi$@*/);
8 return bottomValue + topValue;
9}
ListingĀ 3: Example of the usage of the evolution operator.

Appendix C Implementation details

1public class FunctionPolynomial extends Function{
2 protected double[][] coefficients;
3
4 public FunctionPolynomial(int degx, int degy) {
5 coefficients = new double[degx+1][degy+1];
6 }
7
8 protected void resize(int iMax, int jMax){
9 double[][] coefficientsNew = new double[Math.max(iMax + 1, coefficients.length)][Math.max(jMax + 1, coefficients[0].length)];
10 for (int i = 0; i < coefficients.length; i++){
11 for (int j = 0; j < coefficients[0].length; j++){
12 coefficientsNew[i][j] = coefficients[i][j];
13 }
14 }
15 coefficients = coefficientsNew;
16 }
17
18 public void setCoefficient(int i, int j, double value){
19 if ((i >= coefficients.length) || (j >= coefficients[0].length)){ resize(i, j); }
20 coefficients[i][j] = value;
21 }
22
23 public void addToCoefficient(int i, int j, double value){
24 if ((i >= coefficients.length) || (j >= coefficients[0].length)){ resize(i, j); }
25 coefficients[i][j] += value;
26 }
27
28 public FunctionPolynomial integrateX(){
29 FunctionPolynomial res = new FunctionPolynomial(degreeX()+1, 0);
30 res.setCoefficient(0, 0, 0.0);
31 for (int j = 0; j < coefficients[0].length; j++){
32 for (int i = 0; i < coefficients.length; i++){
33 res.setCoefficient(i+1, j, coefficients[i][j]/(i+1));
34 }
35 }
36 return res;
37 }
38
39 public FunctionPolynomial diffX(){
40 FunctionPolynomial res = new FunctionPolynomial(degreeX(), degreeY());
41 for (int j = 0; j < coefficients[0].length; j++){
42 for (int i = 1; i < coefficients.length; i++){
43 res.setCoefficient(i-1, j, coefficients[i][j]*i);
44 }
45 res.setCoefficient(coefficients.length-1, j, 0);
46 }
47 return res;
48 }
49
50 public FunctionPolynomial divideByX(){
51 // ATTENTION: the x^0 term is lost!
52 FunctionPolynomial res = new FunctionPolynomial(degreeX(), degreeY());
53 for (int j = 0; j < coefficients[0].length; j++){
54 for (int i = 1; i < coefficients.length; i++){
55 res.setCoefficient(i-1, j, coefficients[i][j]);
56 }
57 res.setCoefficient(coefficients.length-1, j, 0);
58 }
59 return res;
60 }
61
62 public double eval(double x, double y){
63 double val = 0;
64
65 double powX, powY;
66
67 powX = 1.0;
68 for (int i = 0; i < coefficients.length; i++){
69 powY = 1.0;
70 for (int j = 0; j < coefficients[0].length; j++){
71 val += coefficients[i][j] * powX * powY;
72 powY *= y;
73 }
74 powX *= x;
75 }
76
77 return val;
78 }
79
80 public Function mult(double val){
81 FunctionPolynomial res = new FunctionPolynomial(degreeX(), degreeY());
82 for (int i = 0; i < coefficients.length; i++){
83 for (int j = 0; j < coefficients[0].length; j++){
84 res.setCoefficient(i, j, val*coefficients[i][j]);
85 }
86 }
87 return res;
88 }
89
90 public FunctionPolynomial mult(FunctionPolynomial p){
91 FunctionPolynomial res = new FunctionPolynomial(p.degreeX()+degreeX(), p.degreeY()+degreeY());
92 for (int i = 0; i < coefficients.length; i++){
93 for (int j = 0; j < coefficients[0].length; j++){
94 for (int ip = 0; ip <= p.degreeX(); ip++){
95 for (int jp = 0; jp <= p.degreeY(); jp++){
96 res.setCoefficient(ip + i, jp + j, res.getCoefficient(ip+i, jp+j) + getCoefficient(i,j)*p.getCoefficient(ip,jp));
97 }
98 }
99 }
100 }
101 return res;
102 }
103
104 public double getCoefficient(int xPower, int yPower){
105 if ((xPower >= coefficients.length) || (yPower >= coefficients[0].length)){
106 return 0.0;
107 } else {
108 return coefficients[xPower][yPower];
109 }
110 }
111
112 public int[] degree(){
113 return new int[] {degreeX(), degreeY()};
114 }
115
116 public int degreeX(){
117 return coefficients.length-1;
118 }
119
120 public int degreeY(){
121 return coefficients[0].length-1;
122 }
123
124 public FunctionPolynomial add(FunctionPolynomial poly){
125 int[] otherDegree = poly.degree();
126 int[] myDegree = this.degree();
127 FunctionPolynomial res = new FunctionPolynomial(Math.max(otherDegree[0], myDegree[0]), Math.max(otherDegree[1], myDegree[1]));
128 int[] deg = res.degree();
129
130 for (int j = 0; j <= deg[1]; j++){
131 for (int i = 0; i <= deg[0]; i++){
132 res.setCoefficient(i, j, getCoefficient(i, j) + poly.getCoefficient(i,j));
133 }
134 }
135 return res;
136 }
137
138 public FunctionPolynomial sub(FunctionPolynomial poly){
139 int[] otherDegree = poly.degree();
140 int[] myDegree = this.degree();
141 FunctionPolynomial res = new FunctionPolynomial(Math.max(otherDegree[0], myDegree[0]), Math.max(otherDegree[1], myDegree[1]));
142 int[] deg = res.degree();
143
144 for (int j = 0; j <= deg[1]; j++){
145 for (int i = 0; i <= deg[0]; i++){
146 res.setCoefficient(i, j, getCoefficient(i, j) - poly.getCoefficient(i,j));
147 }
148 }
149 return res;
150 }
151
152 public static FunctionPolynomial ZERO(){
153 return constantPolynomial(0);
154 }
155
156 public static FunctionPolynomial constantPolynomial(double val){
157 FunctionPolynomial res = new FunctionPolynomial(0, 0);
158 res.setCoefficient(0, 0, val);
159 return res;
160 }
161
162
163}
ListingĀ 4: An example of an implementation of polynomial functions.