1 Introduction

There has been a lot of emerging interest in mimetic scheme design. These are schemes that preserve structures in the solution that arise from involutions in the governing PDEs. In other words, the PDE itself has some extra symmetries that result in certain features of the solution remaining invariant; and we want the numerical scheme to mimic that.

The simplest example of such involution-constrained PDEs consists of the magnetohydrodynamic (MHD) equations, where Faraday’s law ensures divergence-free evolution of the magnetic induction vector field. Another prominent example consists of computational electrodynamics (CED)—the numerical solution of Maxwell’s equations—where the divergences of the magnetic induction vector field and the electric displacement vector field are held zero as long as radiation does not interact with a conductor. Numerous papers have been written on these topics, where it has been realized that the divergence-preserving reconstruction of vector fields is an important building block for scheme design and adaptive mesh refinement (AMR) (Balsara and Spicer [23], Balsara [3,4,5], Balsara and Dumbser [12], Xu et al. [54], Balsara and Käppeli [17, 18], Balsara et al. [7, 10, 14, 19, 24, 25] and Hazra et al. [38]). To get fully constraint-preserving, mimetic, time-evolution it was realized that certain update variables have to be collocated at certain favored locations on a mesh. A weighted essentially non-oscillatory, i.e., WENO-like, reconstruction strategy that preserves the divergence of the vector fields was found to be very valuable in extending these methods to high order. We call such methods WENO-like because they draw on many insights from WENO schemes; however, these insights are applied at the faces of the mesh while a divergence constraint-preserving reconstruction is used to obtain the vector field within the volume of the mesh. (It should also be noted that two-dimensional WENO reconstruction is used in the faces as part of the three-dimensional divergence constraint-preserving reconstruction, which is why we call the reconstruction WENO-like.) To update such variables in a properly upwinded fashion, it is also crucially important to invoke a multidimensional Riemann solver at the edges of the computational mesh (Balsara [6, 7], Balsara et al. [13], Balsara and Dumbser [11], Balsara et al. [26], Balsara and Nkonga [20]). The multidimensional Riemann solver is, therefore, the other important building block of such divergence-constrained schemes.

In obtaining highly accurate globally constraint-preserving discontinuous Galerkin-like (DG-like) schemes for MHD and CED, Balsara and Käppeli [17, 18] showed that both these building blocks were crucially important. They showed that if one attempts to bypass either of these building blocks, it will result in an unstable DG-like scheme. We call these schemes DG-like because they evolve all the face-based modes of the vector field so as to ensure globally divergence constraint-preserving evolution of the vector field; however, they are not like classical DG schemes because the modes are not defined on the volumes. We, therefore, see that a study of the involution-preserving reconstruction can provide substantial insights into scheme design. A review of globally divergence constraint-preserving DG schemes for CED is also available in Balsara and Simpson [22] which collects all the ideas together in an easily accessible format in one place.

While MHD and CED are relatively well-studied PDEs with a divergence constraint, a new class of PDEs has recently emerged and their involution constraints are equally interesting. We are referring to PDEs that support curl-free (or curl-preserving) evolution of vector fields. Indeed, the evolution is curl-free in these systems only as long the source terms in the governing equations are zero. Numerous PDEs of great practical interest fall in this category. Many of the hyperbolic systems resulting from the Godunov-Peshkov-Romenski (GPR) formulation for hyperelasticity and compressible multiphase flow with and without surface tension have such curl-preserving update equations (Godunov and Romenski [36], Romenski [46], Romenski et al. [47], Peshkov and Romenski [45], Dumbser et al. [33, 34], Schmidmayer et al. [48]). The equations of general relativity when cast in the FO-CCZ4 formulation also have such a structure (Alic et al. [1, 2], Brown et al. [28], Dumbser et al. [32], Dumbser et al. [31]). Similarly, it has recently become possible to recast Schrödinger’s equation in first-order hyperbolic form, and the time-evolution of this very important equation also has curl-preserving constraints (Dhaouadi et al. [29]). As with the divergence-preserving reconstruction, the curl-preserving reconstruction also plays an important role in guiding scheme design. The goal of this paper is to show how curl-preserving reconstruction of vector fields can be carried out and why it is so important in the design of curl-constraint-preserving schemes. We restrict our focus to structured meshes, since the treatment of unstructured meshes will be the topic of another paper.

In this work, we take on the task of designing a WENO-like globally curl constraint-preserving reconstruction. This means that the curl of a vector field, evaluated over any closed loop, is always either zero or equal to a specified divergence-free vector field. (As we shall see in Sects. 2 and 3, one-dimensional WENO reconstruction is indeed used in the edges of the mesh as part of the three-dimensional curl constraint-preserving reconstruction which is why we think it is appropriate the call the reconstruction WENO-like. Note though that the constrained reconstruction has many further attributes that go beyond the basic WENO reconstruction.) It may even prove advantageous to refer to PDEs that keep the curl exactly zero as curl-free; whereas PDEs that only preserve the curl constraint in certain limits can be referred to as curl-preserving. Some families of involutionary PDEs, like the FO-CCZ4 formulation of the equations of general relativity, can guarantee that certain vector fields remain curl-free for all time. Other involutionary PDE systems, like the hyperbolic formulation of thermal conduction and viscosity and elastic-plastic transition, have vector fields that are only curl-free when the source term is zero. But important interactions with matter, like the use of thermal conduction, or viscosity or elastic-plastic deformation require the operation of non-zero stiff source terms in those PDE systems.

Having a globally constraint-preserving reconstruction in hand is very useful for computational problems for a very important reason: when coupled with a three-dimensional Riemann solver (see Balsara [9]) it enables us to define a curl-preserving scheme over a single control volume. In other words, the fluid variables can be zone-centered and the curl-free vector field can share that same control volume. The primal curl-constraint-preserving vector field variables of such a scheme reside in the edges of that control volume. Specifically, for a Cartesian mesh, the x-components of such a vector field are collocated at the x-edges; the y-components of such a vector field are collocated at the y-edges and the z-components of such a vector field are collocated at the z-edges. The three-dimensional Riemann solver, invoked at the vertices of the three-dimensional mesh, then yields the curl constraint-preserving update.

1.1 Introduction to a Sample Curl-Preserving PDE and Motivation for Curl-Preserving Schemes

There are several PDE systems that have curl-free, and curl-preserving, vector fields that arise from involutions in the differential equations. The entropy-consistent GPR formulation seems to churn out such involutionary PDEs with amazing regularity. But numerical implementations of other valuable PDE systems, like the numerical solution of first-order reductions of the Einstein equations or the Schrödinger equation, also result in such constraints. Let us take a simple example involving a fluid with thermal conduction in the GPR formulation. Let us denote the density by \(\rho\), the fluid velocity by \({\mathbf{v}}\), the fluid pressure by \(P\), the fluid temperature by \(T\), the internal thermal energy density by \(e\), the total energy density by \(E \equiv e + {{\rho {\mathbf{v}}^{2} } \mathord{\left/ {\vphantom {{\rho {\mathbf{v}}^{2} } 2}} \right. \kern-\nulldelimiterspace} 2}\), the thermal impulse by a vector \({\mathbf{J}}\), the heat flux by a vector \({\mathbf{q}}\) and the thermal stress by the second rank tensor \({{\varvec{\upsigma}}}\). The equations for a fluid with thermal conduction can be written as

$$\frac{\partial \rho }{{\partial t}} + \nabla \cdot \left( {\rho {\mathbf{v}}} \right) = 0,$$
(1a)
$$\frac{{\partial \left( {\rho {\mathbf{v}}} \right)}}{\partial t} + \nabla \cdot \left( {\rho {\mathbf{v}} \otimes {\mathbf{v}} + P{\mathbf{I}} + {{\varvec{\upsigma}}}} \right) = 0,$$
(1b)
$$\frac{\partial E}{{\partial t}} + \nabla \cdot \left( {\left( {E + P} \right){\mathbf{v}} + {\mathbf{v}} \cdot {{\varvec{\upsigma}}} + {\mathbf{q}}} \right) = 0,$$
(1c)
$$\frac{{\partial {\mathbf{J}}}}{\partial t} + \nabla \left( {{\mathbf{J}} \cdot {\mathbf{v}} + T} \right) - {\mathbf{v}} \times \left( {\nabla \times {\mathbf{J}}} \right) = - \frac{\rho T}{\tau }{\mathbf{J}} \, {.}$$
(1d)

The identity matrix is denoted by \({\mathbf{I}}\) in the above equations. The first three of the four equations in Eq. (1) above reveal themselves to be the equations for mass, momentum and energy conservation for a fluid, with additional contributions from the thermal conduction vector, \({\mathbf{q}}\), and the thermal stress tensor, \({{\varvec{\upsigma}}}\). The fourth equation in Eq. (1) is a novel contribution from the GPR formulation, see Romenski [46]. We see that it will be strongly dependent on the magnitude of the relaxation time \(\tau\). When the relaxation term becomes stiff, i.e., the relaxation time is short, the heat conduction will behave asymptotically like the classical Fourier law for parabolic heat conduction. When the relaxation time is very large, the source term becomes irrelevant and the heat conduction will be described by purely hyperbolic heat waves or phonons, propagating with a characteristic speed that is called the second sound. The beauty of the above equations stems from the fact that they constitute a first-order hyperbolic system with a source term that may indeed become stiff in certain limits. Therefore, all of the well-developed technologies that have been developed for solving hyperbolic PDE systems with stiff source terms can indeed be brought to bear on the numerical solution of the above PDE system. Furthermore, the solution method does not require the treatment of a parabolic subsystem, which can be computationally expensive. As already stated before, a formal asymptotic analysis of Eq. (1) shows that the above equations retrieve the Navier-Stokes equations with the traditional Fourier law of heat conduction in the stiff limit when the relaxation time \(\tau\) tends to zero. To complete our description of the above system, we also mention the constitutive relation for the thermal stress tensor \(\sigma_{ij} = \rho c_{h}^{2} J_{i} J_{j}\) and the other constitutive relation for the thermal conduction vector \(q_{i} = \rho Tc_{h}^{2} J_{i}\). Here \(c_{h}\) denotes the hyperbolic speed of heat waves, i.e., the second sound.

Now let us focus on the last equation in Eq. (1). Let us consider the limit where the relaxation time is very large, so that the source term is irrelevant. Since the vector field \({\mathbf{J}}\) starts off curl-free, it is easy to see that it remains curl-free by considering the remaining two parts of that equation. The first part of the update equation, given by \(\nabla \left( {{\mathbf{J}} \cdot {\mathbf{v}} + T} \right)\), is just the gradient of a scalar. Since the curl of a gradient is zero, the first term will not contribute to the curl if none is present initially. The second part of the update equation, given by \({\mathbf{v}} \times \left( {\nabla \times {\mathbf{J}}} \right)\), will also be zero if the vector \({\mathbf{J}}\) is initially curl-free. We see, therefore, that the vector field \({\mathbf{J}}\) stays curl-free if it is initially curl-free in the limit of very large relaxation time. Of course, when the relaxation time cannot be ignored, the curl of the vector field does indeed evolve in response to the presence of the stiff source term \(- \rho T \, {{\mathbf{J}} \mathord{\left/ {\vphantom {{\mathbf{J}} \tau }} \right. \kern-\nulldelimiterspace} \tau }\). It is important to realize that if the fourth equation in Eq. (1) does not have a consistent discretization then the curl of the vector field \({\mathbf{J}}\) will only be specified by the accuracy of the numerical method. As a result, even for regions of the flow that should have no thermal conduction, there will indeed continue to be some small amount of thermal conduction. This affects the fidelity of the method and its results. We, therefore, see the importance of a consistent, curl-preserving discretization and evolution strategy. Let us address that next.

The fourth equation in Eq. (1) contains the involution and therefore deserves further attention. Because the evolution of a curl-free vector field \({\mathbf{J}}\) is only governed by the gradient term \(\nabla \left( {{\mathbf{J}} \cdot {\mathbf{v}} + T} \right)\) we must pick a mimetic discretization that ensures this curl-free evolution. A good conceptual model for a curl is the altitude in a mountainous region. It does not matter which closed curve one takes in that mountainous region, as long as the curve is closed, the total change in elevation will be zero. This is the model that we keep at the back of our mind when studying this problem. The closed curve could be the edges of a rectangular mesh in 2D. For a 3D Cartesian mesh, we have closed curves in all the faces of a cuboidal element. Along each of those faces, the circulation of the vector field \({\mathbf{J}}\) must be zero in all the situations where the vector field is required to evolve in a curl-free fashion. This is only guaranteed if the components of \({\mathbf{J}}\) are collocated at the edges of the mesh and \(\left( {{\mathbf{J}} \cdot {\mathbf{v}} + T} \right)\) is collocated at the corners of the mesh. But realize that we are solving a hyperbolic system, as a result \(\left( {{\mathbf{J}} \cdot {\mathbf{v}} + T} \right)\) will have to be obtained consistently with multidimensional upwinding at the corners of the mesh. There already exists a 3D Riemann solver that does this (Balsara [9]).

Let us now press on with our study of the last equation in Eq. (1). Let us focus on the term \({\mathbf{v}} \times \left( {\nabla \times {\mathbf{J}}} \right)\). When the curl is zero, it is irrelevant. However, when the curl is non-zero, it does affect the time rate of change of the component of \({\mathbf{J}}\) that is aligned with the edges of the mesh. How can we get the measure of the curl of a vector field? In three dimensions, we can only do that by reconstructing the vector field in a three-dimensional fashion. (Likewise, of course, in two dimensions.) In other words, we need to start with the components of \({\mathbf{J}}\) in the edges that surround each volume element of the mesh and obtain from it a consistent value of \({\mathbf{J}}\) within the volume element. This should be done in a way that reflects, in some appropriate fashion, the curl that is already present in the faces of that mesh element. This is the problem of reconstructing a vector field consistent with its constraints. We, therefore, see that we will have to pay special attention in this paper to curl-free and curl-preserving reconstruction of vector fields.

Let us now take the curl of the third equation in Eq. (1). Let us also make the definition \({\mathbf{R}} \equiv \nabla \times {\mathbf{J}}\), where the vector field \({\mathbf{R}}\) is referred to as the Burger’s vector field. It is easy to see from its very definition that \(\nabla \cdot {\mathbf{R}} = 0\); i.e., the Burger’s vector is divergence-free. Now let us take the curl of the fourth equation in Eq. (1). We get (see Peshkov et al. [44])

$$\frac{{\partial {\mathbf{R}}}}{\partial t} - \nabla \times \left( {{\mathbf{v}} \times {\mathbf{R}}} \right) + \nabla \times \left( {\frac{\rho T}{\tau }{\mathbf{J}}} \right) = 0.$$
(2)

We see immediately that Eq. (2) guarantees divergence-free time-evolution for the Burger’s vector field. (Those who are familiar with the induction equation for MHD will also see the great parallels between Eq. (2), evaluated in the limit where \(\tau \to \infty\), and the MHD induction equation.)

Now notice that the fourth equation of the set of equations in Eq. (1) gives an evolutionary equation for the time-evolution of the curl of \({\mathbf{J}}\)—see Eq. (2). To preserve the mimetic nature of the time evolution, the components of the curl-constrained vector field should be collocated at the edges of the mesh. We realize from Eq. (2) that curl-preserving reconstruction of a vector field should always pay attention to the curl of the vector field. The curl of the reconstructed vector field should be divergence-free. Therefore, we see that when designing a DG-like scheme for curl constraint-preserving PDEs we will get an additional equation for the evolution of the curl of the vector field \({\mathbf{J}}\) that is of interest. In keeping with the DG philosophy, the higher moments of the curl of this vector field should have its components collocated at the faces of the mesh and evolved in divergence-free fashion. For a finite volume (FV) WENO-like scheme, of course, we have to reconstruct the higher moments of the Burger’s vector field \({\mathbf{R}}\). Furthermore, these higher moments must guarantee that \(\nabla \cdot {\mathbf{R}} = 0\). The zeroth moment of the Burger’s vector does not need to be reconstructed because it is always given to us by a discrete application of the definition, \({\mathbf{R}} \equiv \nabla \times {\mathbf{J}}\), in the faces of the zone of interest. Therefore, for WENO-like schemes we do not need to simultaneously evolve Eq. (2).

1.2 Introduction: Plan of the Paper

The rest of the paper follows the ensuing plan. In Sect. 2, we show how the curl-preserving reconstruction can be carried out at all locations of a two-dimensional Cartesian mesh; this will include second- to fourth-order reconstructions. Section 3 extends these ideas to three-dimensional Cartesian meshes. Those two sections also have demonstrations that (when they are coupled to a multidimensional Riemann solver) the two-dimensional and three-dimensional schemes are multidimensionally upwinded and, therefore, stable. Section 4 shows results of a von Neumann stability analysis of curl constraint-preserving WENO-like schemes. Section 5 shows some results from a couple of model problems where the lack of curl-preserving reconstruction is shown to have obvious deleterious effects. Section 6 shows some applications of the GPR system in Eq. (1) to some further test problems. Section 7 presents some conclusions.

2 Curl-Preserving Reconstruction on a Two-dimensional Cartesian Mesh

It is easiest to get introduced to this subject in two dimensions, especially on a structured mesh. We consider this problem in five easy subsections. In Subsect. 2.1, we present a first-order accurate reconstruction of a curl-preserving vector field. In Subsect. 2.2, we present a second-order accurate reconstruction of a curl-preserving vector field. In Subsects. 2.3 and 2.4, we present third- and fourth-order extensions. Subsection 2.5 shows that the curl-free reconstruction, when combined with a two-dimensional Riemann solver, produces a properly upwinded numerical scheme. Each subsection is designed to give us a new and important insight.

2.1 Curl-Preserving Reconstruction on a Two-dimensional Cartesian Mesh at First Order

Let us consider what is entailed in a first-order reconstruction. In keeping with the spirit of a first-order FV scheme for fluid flow, it means that each edge of a rectangular/square zone has a component of the vector field along the direction of the edge. In simplest form, and for a unit square zone with extent \(\left( {x,y} \right) \in \left[ { - {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2},{1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}} \right] \times \left[ { - {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2},{1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}} \right]\), this is shown in Fig. 1. Any rectangular zone can be mapped to such a square zone, so our results are perfectly general. Figure 1 shows the collocation of vector components along the edges of a two-dimensional control volume. As evaluated over the edges of the square element, the discrete circulation is fully specified. (The mean value and its linear variation are shown along each edge in Fig. 1, in anticipation of a second-order accurate reconstruction scheme. However, in this subsection, we ignore the linear variation.) The reconstruction problem for a curl-free reconstruction consists of obtaining a polynomial-based vector field that is globally curl-free within this two-dimensional control volume. The reconstruction problem for a curl-preserving reconstruction consists of obtaining a polynomial-based vector field that matches the specified mean circulation in the zone.

Fig. 1
figure 1

The collocation of vector components along the edges of a two-dimensional control volume. As evaluated over the edges of the square element, the discrete circulation is fully specified. The mean value and its linear variation are shown along each edge, in anticipation of a second-order accurate reconstruction scheme. The reconstruction problem for a curl-free reconstruction consists of obtaining a polynomial-based vector field that is globally curl-free within this two-dimensional control volume. The reconstruction problem for a curl-preserving reconstruction consists of obtaining a polynomial-based vector field that matches the specified mean circulation in the zone

From Fig. 1, we see that the bottom and top x-edges have x-components of the vector field that are given by \(V_{x}^{1}\) and \(V_{x}^{2}\), respectively. Likewise, the left and right y-edges have y-components of the vector field that are given by \(V_{y}^{1}\) and \(V_{y}^{2}\), respectively. A polynomial that holds over the entire unit square and matches the specified values at the edges is given by

$$\left\{\begin{aligned} V^{x} \left( {x,y} \right) &= V_{x}^{1} \left( {\frac{1}{2} - y} \right) + V_{x}^{2} \left( {\frac{1}{2} + y} \right),\\ V^{y} \left( {x,y} \right) &= V_{y}^{1} \left( {\frac{1}{2} - x} \right) + V_{y}^{2} \left( {\frac{1}{2} + x} \right). \end{aligned} \right. $$
(3)

By taking the curl of the above vector field, we get

$$\left( {\nabla \times {\mathbf{V}}} \right)_{z} = \frac{{\partial V^{y} }}{\partial x} - \frac{{\partial V^{x} }}{\partial y} = \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right].$$
(4)

We see that the curl, evaluated as a differential expression, gives back the discrete circulation of the vector field over the unit square shown in Fig. 1. If the discrete circulation is curl-free, then it will evaluate in Eq. (3) will also be curl-free, i.e., the curl evaluated at each local point in the unit square is exactly zero. If the discrete circulation is not curl-free then the differential form in Eq. (4) matches the exact value of the discrete circulation at all locations of the unit square, which is reasonable. Observe too that \(V^{x} \left( {x,y} \right)\) only has linear variation in the y-direction while \(V^{y} \left( {x,y} \right)\) only has linear variation in the x-direction in Eq. (3) with the result that the reconstruction in Eq. (3) is only first-order accurate.

It is also worthwhile to observe that if any three of the four components given by \(V_{x}^{1}\), \(V_{x}^{2}\), \(V_{y}^{2}\) and \(V_{y}^{1}\) are specified, and if we are told that the vector field is curl-free, then the fourth component is automatically satisfied. This is a small observation for now, but it will be expanded on in subsequent sections.

2.2 Curl-Preserving Reconstruction on a Two-dimensional Cartesian Mesh at Second Order

Now let us consider second-order extensions. In the spirit of van Leer [41] and Kolgan [40], this is tantamount to endowing each of the edges with a piecewise linear variation. From Fig. 1, we see that the bottom and top x-edges have x-components of the vector field that are now endowed with undivided differences in the x-direction given by \(\left( {\Delta_{x} V_{x}^{1} } \right)\) and \(\left( {\Delta_{x} V_{x}^{2} } \right)\), respectively. In an FV setting, these undivided differences can be obtained using a TVD or WENO scheme applied one-dimensionally along the x-edges. To retain second-order accuracy, the one-dimensional reconstruction of the first moments should be obtained from a WENO scheme that is at least second-order accurate. Similarly, from Fig. 1 we see that the left and right y-edges have y-components of the vector field that are now endowed with undivided differences in the y-direction given by \(\left( {\Delta_{y} V_{y}^{1} } \right)\) and \(\left( {\Delta_{y} V_{y}^{2} } \right)\), respectively. In an FV setting, these undivided differences can be obtained using a TVD or WENO scheme applied one-dimensionally along the y-edges. (For a second-order DG scheme, these undivided differences will indeed become evolutionary modes.) Let us say that we follow exactly the same game plan as in Eq. (3) and write

$$\left\{\begin{array}{lll} V^{x} \left( {x,y} \right) = \left( {V_{x}^{1} + \left( {\Delta_{x} V_{x}^{1} } \right)x} \right)\left( {\frac{1}{2} - y} \right) + \left( {V_{x}^{2} + \left( {\Delta_{x} V_{x}^{2} } \right)x} \right)\left( {\frac{1}{2} + y} \right), \hfill \\ V^{y} \left( {x,y} \right) = \left( {V_{y}^{1} + \left( {\Delta_{y} V_{y}^{1} } \right)y} \right)\left( {\frac{1}{2} - x} \right) + \left( {V_{y}^{2} + \left( {\Delta_{y} V_{y}^{2} } \right)y} \right)\left( {\frac{1}{2} + x} \right). \hfill \\ \end{array}\right.$$
(5)

To see the problem with Eq. (5), let us take its curl. We get

$$\begin{aligned} \left( {\nabla \times {\mathbf{V}}} \right)_{z} = \frac{{\partial V^{y} }}{\partial x} - \frac{{\partial V^{x} }}{\partial y} =& \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right] \\ &+ \left[ {\left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right)} \right]x + \left[ {\left( {\Delta_{y} V_{y}^{2} } \right) - \left( {\Delta_{y} V_{y}^{1} } \right)} \right]y. \end{aligned}$$
(6)

We see that even if the original vector field had a discrete circulation that was zero over the square shown in Fig. 1, the resulting curl evaluated at all points within the square will not be zero. This is because in general \(\left( {\Delta_{x} V_{x}^{2} } \right) \ne \left( {\Delta_{x} V_{x}^{1} } \right)\) and \(\left( {\Delta_{y} V_{y}^{2} } \right) \ne \left( {\Delta_{y} V_{y}^{1} } \right)\), the linear variations in the x- and y-directions in Eq. (6) will not be zero. Therefore, Eq. (5) is not curl-preserving.

Having seen that a naïve attack on the problem yields nothing of value, let us renew our effort. We take inspiration from the divergence-free reconstruction of two-dimensional vector fields that was discussed in Subsect. 3.1 of Balsara [3] and realize that when we are dealing with a constrained vector field, the components couple. In other words, the vector field is an entire entity and we cannot take the individual components as disjoint entities. Therefore, the x-component of the vector field will couple to the y-component of the vector field so as to preserve the constraints. Since we have already realized that curl-free and curl-preserving reconstruction are just two sides of the same coin, we focus on the former problem first. Let us write our vector field as

$$\left\{\begin{array}{ll} V^{x} \left( {x,y} \right) = \left[ {V_{x}^{1} + \left( {\Delta_{x} V_{x}^{1} } \right)x} \right]\left( {\frac{1}{2} - y} \right) + \left[ {V_{x}^{2} + \left( {\Delta_{x} V_{x}^{2} } \right)x} \right]\left( {\frac{1}{2} + y} \right) + a_{yy} \left( {1 - 4y^{2} } \right), \hfill \\ V^{y} \left( {x,y} \right) = \left[ {V_{y}^{1} + \left( {\Delta_{y} V_{y}^{1} } \right)y} \right]\left( {\frac{1}{2} - x} \right) + \left[ {V_{y}^{2} + \left( {\Delta_{y} V_{y}^{2} } \right)y} \right]\left( {\frac{1}{2} + x} \right) + b_{xx} \left( {1 - 4x^{2} } \right). \hfill \\ \end{array}\right.$$
(7)

Notice that all the terms that are needed for obtaining second-order accuracy are already present in Eq. (7). The \(a_{yy} \left( {1 - 4y^{2} } \right)\) term is designed to go to zero at \(y = \pm {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}\), i.e., at the upper and lower x-edges of the mesh shown in Fig. 1. This ensures that at the abutting x-edges of a full two-dimensional mesh we have one and the same value for \(V^{x} \left( {x,y} \right)\). Similarly, the \(b_{xx} \left( {1 - 4x^{2} } \right)\) term is designed to go to zero at \(x = \pm {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}\), i.e., at the right and left y-edges of the mesh shown in Fig. 1. This ensures that the abutting y-edges of a full two-dimensional mesh have one and the same value of \(V^{y} \left( {x,y} \right)\). The above two sentences ensure that the reconstruction strategy is globally curl-free or curl-preserving. We can now express the curl of the above vector field as

$$\begin{aligned} \left( {\nabla \times {\mathbf{V}}} \right)_{z} = \frac{{\partial V^{y} }}{\partial x} - \frac{{\partial V^{x} }}{\partial y} = & \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right] \\ &+ \left[ {\left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right) - 8b_{xx} } \right]x + \left[ {\left( {\Delta_{y} V_{y}^{2} } \right) - \left( {\Delta_{y} V_{y}^{1} } \right) + 8a_{yy} } \right]y. \end{aligned}$$
(8)

We see that the first square bracket in the above equation still expresses the discrete circulation, which is exactly zero for a curl-free vector field. The second and third square brackets in the above equation can be made zero by setting

$$b_{xx} = \frac{1}{8}\left[ {\left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right)} \right]{;}\quad a_{yy} = \frac{1}{8}\left[ {\left( {\Delta_{y} V_{y}^{1} } \right) - \left( {\Delta_{y} V_{y}^{2} } \right)} \right].$$
(9)

Notice that from a finite difference point of view, the coefficients \(a_{yy}\) and \(b_{xx}\) are just higher order derivatives of the undivided differences, and as a result, the second-order accuracy of Eq. (7) is not affected by the inclusion of these additional terms.

The analogies with divergence-free reconstruction in Balsara [3] are also worth drawing. In both cases, the first-order term is an expression of the discrete constraint applied to the boundaries of the element. The inclusion of higher order terms requires additional coefficients to ensure that the differential form of the constraint is exactly satisfied at all locations within the element.

Now that we have thoroughly discussed all the nuances of a curl-free reconstruction of a vector field, we are in a position to discuss how the idea goes over to a curl-preserving reconstruction. Recall that the fourth equation in Eq. (1) indeed has an evolutionary equation for the curl, see Eq. (2). Notice that in a curl-preserving reconstruction, Fig. 1 shows us that the discrete circulation in the square zone is given by \(\left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right]\). For a second-order DG scheme, Eq. (2) would provide the time-evolving higher moments of the curl. For an FV scheme, we can reconstruct such a quantity for all zones of the two-dimensional mesh. Using neighboring elements, we can obtain a TVD-based or WENO-based piecewise linear, FV reconstruction of the circulation. Such a reconstruction should match the discrete circulation in the target zone. As a result, for the zone shown in Fig. 1, we can write the piecewise linear circulation as

$$R^{z} \left( {x,y} \right) = \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right] + \left( {\Delta_{x} R^{z} } \right)x + \left( {\Delta_{y} R^{z} } \right)y.$$
(10)

Matching Eqs. (8) and (10) we get

$$b_{xx} = \frac{1}{8}\left[ { - \left( {\Delta_{x} R^{z} } \right) + \left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right)} \right]{;}\quad a_{yy} = \frac{1}{8}\left[ {\left( {\Delta_{y} R^{z} } \right) + \left( {\Delta_{y} V_{y}^{1} } \right) - \left( {\Delta_{y} V_{y}^{2} } \right)} \right].$$
(11)

Comparing Eqs. (9) and (11) we now observe an obvious correspondence between curl-free and curl-preserving reconstruction. Specifying one is tantamount to specifying the other.

It is also worth pointing out that Eqs. (1) and (2) show us that the curl of the vector field explicitly participates in the time-update. Therefore, it is useful to provide explicit expressions not just for the vector field but also for its curl, as was done in Eq. (8). Such expressions prove to be quite valuable for making numerical implementations.

When a one-dimensional TVD or WENO reconstruction is used to obtain \(\left( {\Delta_{x} V_{x}^{1} } \right)\), \(\left( {\Delta_{x} V_{x}^{2} } \right)\), \(\left( {\Delta_{y} V_{y}^{1} } \right)\) and \(\left( {\Delta_{y} V_{y}^{2} } \right)\) in Eq. (7), we realize that we are automatically building in non-linear hybridization into the multidimensional curl-preserving reconstruction. It is for this reason that all the resulting schemes presented in this paper inherit all the good non-linear stabilization properties that are an integral part of higher order Godunov schemes. Consequently, by its very construction, the non-linearly hybridized curl-preserving reconstruction developed here integrates very well with higher order Godunov philosophy.

2.3 Curl-Preserving Reconstruction on a Two-dimensional Cartesian Mesh at Third Order

We extend the results from the previous subsection to the third order case here. In addition to being useful for scheme design, this is useful for analytic work on WENO-like or DG-like schemes, and their von Neumann stability analysis. Notice first off that \(V^{x} \left( {x,y} \right)\) in Eq. (7) has constant, x, y, xy and y2 terms. Therefore, to become a truly third-order reconstruction, it minimally needs an x2-dependent term, which will indeed be added along the x-edges. Similarly, \(V^{y} \left( {x,y} \right)\) in Eq. (7) has constant, x, y, xy and x2 terms. Therefore, to become a truly third-order reconstruction, it minimally needs a y2-dependent term, which will indeed be added along the y-edges. Such a way of thinking shows us how each reconstruction of the curl constraint-preserving vector field at a certain order illuminates the way to the reconstruction at the next higher order. At least on a structured mesh, where the polynomial terms can proliferate, this is the systematic strategy that one should pursue.

It is important to be emphatic about a point of detail that we develop in this paragraph. One may think that it is unreasonable to claim that the y2 mode is present in \(V^{x} \left( {x,y} \right)\) in Eq. (7) because that mode comes purely from the constraint-satisfaction at second order. Similarly, one may think that it is unreasonable to claim that the x2 mode is present in \(V^{y} \left( {x,y} \right)\) in Eq. (7) because that mode also comes from constraint-satisfaction at second order. However, indeed those modes are truly present because this is the very idea behind a constrained vector field. The constraint basically tells us that if a mode in \(V^{x} \left( {x,y} \right)\) or \(V^{y} \left( {x,y} \right)\) is needed to satisfy the curl-free (or curl-preserving) constraint, then it is indeed truly satisfied. It does not matter that it is satisfied by variation in the other vector component, because the curl-free (or curl-preserving) vector field is just a single entity. None of the components of the curl-free vector field are entire in themselves, and they only exist as parts of a whole! An entirely analogous observation has been found to be true over and over again in divergence constraint-preserving reconstruction for MHD and CED (Balsara [3,4,5], Balsara et al. [24, 25]).

Let us now extend the curl-free reconstruction to third order. At the bottom and top x-edges of the square shown in Fig. 1 we now add piecewise quadratic modes that we denote by \(\left( {\Delta_{xx} V_{x}^{1} } \right)\) and \(\left( {\Delta_{xx} V_{x}^{2} } \right)\), respectively. In an FV setting, these quadratic modes can be obtained using a WENO scheme applied one-dimensionally along the x-edges. The linear modes are also provided by the same WENO scheme. To retain third-order accuracy, the one-dimensional reconstruction of the linear and quadratic modes should be obtained from a WENO scheme that is at least third-order accurate. Similarly, at the left and right y-edges of the square shown in Fig. 1 we now add piecewise quadratic modes that we denote by \(\left( {\Delta_{yy} V_{y}^{1} } \right)\) and \(\left( {\Delta_{yy} V_{y}^{2} } \right)\), respectively. In an FV setting, these quadratic modes can be obtained using a WENO scheme applied one-dimensionally along the y-edges; likewise for the linear modes. The linear modes are also provided by the same WENO scheme. We use a sequence of orthogonal Legendre polynomials because the higher order polynomials all average to zero and the polynomial sequence retains a nice orthogonality property. It is important to notice that the inclusion of a quadratic x2-dependent term along each of the x-edges in \(V^{x} \left( {x,y} \right)\) will also trigger additional modes of the form x2y. Likewise, the inclusion of a quadratic y2-dependent term along each of the y-edges in \(V^{y} \left( {x,y} \right)\) will also trigger additional modes of the form y2x. To compensate for the effect of these terms on the curl, some higher order polynomial terms have to be added. We now have at third order

$$\left\{ \begin{array} {l} V^{x} \left( {x,y} \right) = \left[ {V_{x}^{1} + \left( {\Delta_{x} V_{x}^{1} } \right)x + \left( {\Delta_{xx} V_{x}^{1} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {\frac{1}{2} - y} \right) \hfill \\ \quad \quad\quad \quad+ \left[ {V_{x}^{2} + \left( {\Delta_{x} V_{x}^{2} } \right)x + \left( {\Delta_{xx} V_{x}^{2} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {\frac{1}{2} + y} \right) \hfill \\ \quad \quad \quad \quad+ a_{yy} \left( {1 - 4y^{2} } \right) + a_{yyy} y\left( {1 - 4y^{2} } \right) + a_{xyy} x\left( {1 - 4y^{2} } \right), \hfill \\ V^{y} \left( {x,y} \right) = \left[ {V_{y}^{1} + \left( {\Delta_{y} V_{y}^{1} } \right)y + \left( {\Delta_{yy} V_{y}^{1} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {\frac{1}{2} - x} \right) \hfill \\ \quad \quad \quad\quad + \left[ {V_{y}^{2} + \left( {\Delta_{y} V_{y}^{2} } \right)y + \left( {\Delta_{yy} V_{y}^{2} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {\frac{1}{2} + x} \right) \hfill \\ \quad \quad \quad\quad + b_{xx} \left( {1 - 4x^{2} } \right) + b_{xxx} x\left( {1 - 4x^{2} } \right) + b_{xxy} y\left( {1 - 4x^{2} } \right). \hfill \\ \end{array}\right.$$
(12)

The \(a_{xyy}\) and \(b_{xxy}\) are not mandatory for order property preservation, but we shall show shortly that they are needed in the construction of a WENO-like or DG-like scheme for curl constraint-preserving vector fields. We can now write out the curl of the above vector field as

$$\begin{aligned} \left( {\nabla \times {\mathbf{V}}} \right)_{z} = \frac{{\partial V^{y} }}{\partial x} - \frac{{\partial V^{x} }}{\partial y} =& \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right]\\ & + \left[ {\left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right) - 8b_{xx} } \right]x + \left[ {\left( {\Delta_{y} V_{y}^{2} } \right) - \left( {\Delta_{y} V_{y}^{1} } \right) + 8a_{yy} } \right]y \\ & + \left[ {\left( {\Delta_{xx} V_{x}^{1} } \right) - \left( {\Delta_{xx} V_{x}^{2} } \right) - 12b_{xxx} } \right]\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left[ { - \left( {\Delta_{yy} V_{y}^{1} } \right) + \left( {\Delta_{yy} V_{y}^{2} } \right) + 12a_{yyy} } \right]\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + 8\left( {a_{xyy} - b_{xxy} } \right)xy. \end{aligned}$$
(13)

As with Eq. (10), we can now reconstruct the discrete circulation up to and including quadratic variation over each zone, and write the result as

$$\begin{aligned} R^{z} \left( {x,y} \right) &= \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right] + \left( {\Delta_{x} R^{z} } \right)x + \left( {\Delta_{y} R^{z} } \right)y \\ &\quad + \left( {\Delta_{xx} R^{z} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left( {\Delta_{yy} R^{z} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left( {\Delta_{xy} R^{z} } \right)xy. \\ \end{aligned}$$
(14)

Please note that for a WENO-like scheme, the higher moments in Eq. (14) are reconstructed; whereas for a DG-like scheme the higher moments in Eq. (14) are evolved. Equating like terms in Eqs. (13) and (14) we get

$$\left\{\begin{array}{ll} b_{xxx} = \frac{1}{12}\left[ { - \left( {\Delta_{xx} R^{z} } \right) + \left( {\Delta_{xx} V_{x}^{1} } \right) - \left( {\Delta_{xx} V_{x}^{2} } \right)} \right];\\ a_{yyy} = \frac{1}{12}\left[ {\left( {\Delta_{yy} R^{z} } \right) + \left( {\Delta_{yy} V_{y}^{1} } \right) - \left( {\Delta_{yy} V_{y}^{2} } \right)} \right]{ ;} \quad b_{xx} = \frac{1}{8}\left[ { - \left( {\Delta_{x} R^{z} } \right) + \left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right)} \right]{;}\\ a_{yy} = \frac{1}{8}\left[ {\left( {\Delta_{y} R^{z} } \right) + \left( {\Delta_{y} V_{y}^{1} } \right) - \left( {\Delta_{y} V_{y}^{2} } \right)} \right]{ ;} \quad a_{xyy} = - b_{xxy} = \frac{1}{16}\left( {\Delta_{xy} R^{z} } \right). \hfill \\ \end{array}\right.$$
(15)

This gives us the third-order curl-free or curl-preserving reconstruction on a two-dimensional Cartesian mesh. To get a curl-free reconstruction, just set all the coefficients in Eq. (14) to zero. We can now also notice that a third-order accurate DG-like scheme which evolves all the modes of the circulation in Eq. (14) will indeed evolve a value for \(\left( {\Delta_{xy} R^{z} } \right)\). As a result, the terms \(a_{xyy}\) and \(b_{xxy}\) in Eq. (12) were needed for matching all the modes of a third-order accurate DG-like scheme which evolves the primal vector field in Eq. (12) as well as its curl in Eq. (14). If the vector field in Eq. (12) can be guaranteed to be curl-free then the terms \(a_{xyy}\) and \(b_{xxy}\) in Eq. (12) are not needed.

Now notice that the vector field in Eq. (12) only needs to be up to third-order accurate, i.e., it only needs to retain all the quadratic terms that arise in a two-dimensional Taylor series expansion. Therefore, when dealing with an FV scheme, its curl only needs to be second-order accurate. In other words, for a third-order accurate FV scheme, if we had set the coefficients \(\left( {\Delta_{xx} R^{z} } \right)\), \(\left( {\Delta_{yy} R^{z} } \right)\) and \(\left( {\Delta_{xy} R^{z} } \right)\) to zero, Eq. (14) would still have been second-order accurate. Therefore, in an FV scheme, it would have been acceptable, and third-order accurate, to have set \(a_{xyy} = b_{xxy} = 0\) in Eq. (12). For a DG-like scheme, of course, all the modes in Eq. (14) are needed. Also notice that from a finite difference point of view, the coefficients \(a_{yy}\), \(a_{yyy}\), \(b_{xx}\) and \(b_{xxx}\) in Eq. (15) are just higher order derivatives of the undivided differences, and as a result, the third-order accuracy of Eq. (12) is not affected by the inclusion of these additional terms.

2.4 Curl-Preserving Reconstruction on a Two-dimensional Cartesian Mesh at Fourth Order

Let us now make a fourth-order extension. We use our idea of systematically thinking about the terms that are present in the third-order reconstruction and using them to inform our choices at fourth-order. Notice, first off, that \(V^{x} \left( {x,y} \right)\) in Eq. (12) has constant, x, y, x2, xy, y2, y3 and x2y terms. To that, along each x-edge, we will indeed add an x3-dependent term. However, to have full fourth-order accurate reconstruction, we will still need an xy2 term, which must indeed be added with a zone-centered collocation! In other words, by enriching the moments along each x-edge we simply cannot obtain a term with xy2 variation, so we have to include it at a location where all the moments have validity, namely at the zone center. Furthermore, notice that \(V^{y} \left( {x,y} \right)\) in Eq. (12) has constant, x, y, x2, xy, y2, x3 and xy2 terms. To that, along each y-edge, we will indeed add a y3–dependent term. However, to have full fourth order accurate reconstruction, we will still need an x2y term, which must indeed be added with a volume-centered collocation! As before, by enriching the moments along each y-edge we simply cannot obtain a term with x2y variation, so we have to include it at a location where all the moments have validity, namely at the zone center. We now see the value of our systematic, order-by-order approach because it has highlighted for us the fourth-order terms that are supplied by enriching the basis space along the edges and the additional modes that have to be supplied volumetrically. (A similar subdivision occurs in divergence-free reconstruction for CED and MHD where we already know that at fourth order and beyond, many of the modes are face-centered, but some are volume-centered. There too, we realized that we could not enrich the space of spatial modes to obtain all the terms that are needed in a fourth order accurate Taylor series expansion. As a result, some of the modes had to be volume-centered; see Balsara and Käppeli [18] and Hazra et al. [38].)

Let us now extend the curl-free reconstruction to fourth order. At the bottom and top x-edges of the square shown in Fig. 1 we now add piecewise cubic modes that we denote by \(\left( {\Delta_{xxx} V_{x}^{1} } \right)\) and \(\left( {\Delta_{xxx} V_{x}^{2} } \right)\), respectively. Similarly, at the left and right y-edges of the square shown in Fig. 1 we now add piecewise cubic modes that we denote by \(\left( {\Delta_{yyy} V_{y}^{1} } \right)\) and \(\left( {\Delta_{yyy} V_{y}^{2} } \right)\), respectively. We use a sequence of orthogonal Legendre polynomials, as before. The inclusion of a cubic x3-dependent term along each of the x-edges in \(V^{x} \left( {x,y} \right)\) will also trigger additional modes of the form x3y. Likewise, the inclusion of a cubic y3-dependent term along each of the y-edges in \(V^{y} \left( {x,y} \right)\) will also trigger additional modes of the form y3x. To compensate for the effect of these terms on the curl, some higher order polynomial terms have to be added. The analysis from the previous paragraph allows us to write the fourth-order curl constraint-preserving vector field as

$$\left\{\begin{aligned} V^{x} \left( {x,y} \right) =& \left[ {V_{x}^{1} + \left( {\Delta_{x} V_{x}^{1} } \right)x + \left( {\Delta_{xx} V_{x}^{1} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left( {\Delta_{xxx} V_{x}^{1} } \right)\left( {x^{3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)} \right]\left( {\frac{1}{2} - y} \right) \\ & + \left[ {V_{x}^{2} + \left( {\Delta_{x} V_{x}^{2} } \right)x + \left( {\Delta_{xx} V_{x}^{2} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left( {\Delta_{xxx} V_{x}^{2} } \right)\left( {x^{3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)} \right]\left( {\frac{1}{2} + y} \right) \\ & + a_{xyy} x\left( {1 - 4y^{2} } \right) + a_{yy} \left( {1 - 4y^{2} } \right) + a_{yyy} y\left( {1 - 4y^{2} } \right) + a_{yyyy} y^{2} \left( {1 - 4y^{2} } \right) \\ &+ a_{xyyy} xy\left( {1 - 4y^{2} } \right) + a_{xxyy} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\left( {1 - 4y^{2} } \right) \\ &+ a_{xyyyy} x\left( {\left( {y^{4} - {{3y^{2} } \mathord{\left/ {\vphantom {{3y^{2} } {14}}} \right. \kern-\nulldelimiterspace} {14}} + {3 \mathord{\left/ {\vphantom {3 {560}}} \right. \kern-\nulldelimiterspace} {560}}} \right) - {1 \mathord{\left/ {\vphantom {1 {70}}} \right. \kern-\nulldelimiterspace} {70}}} \right)+ a_{xxxyy} \left( {x^{3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)\left( {1 - 4y^{2} } \right){ ,} \\ V^{y} \left( {x,y} \right) =& \left[ {V_{y}^{1} + \left( {\Delta_{y} V_{y}^{1} } \right)y + \left( {\Delta_{yy} V_{y}^{1} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left( {\Delta_{yyy} V_{y}^{1} } \right)\left( {y^{3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)} \right]\left( {\frac{1}{2} - x} \right) \\ & + \left[ {V_{y}^{2} + \left( {\Delta_{y} V_{y}^{2} } \right)y + \left( {\Delta_{yy} V_{y}^{2} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left( {\Delta_{yyy} V_{y}^{2} } \right)\left( {y^{3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)} \right]\left( {\frac{1}{2} + x} \right) \\& + b_{xxy} y\left( {1 - 4x^{2} } \right) + b_{xx} \left( {1 - 4x^{2} } \right) + b_{xxx} x\left( {1 - 4x^{2} } \right) + b_{xxxx} x^{2} \left( {1 - 4x^{2} } \right) \\ &+ b_{xxxy} xy\left( {1 - 4x^{2} } \right) + b_{xxyy} \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\left( {1 - 4x^{2} } \right) \\ & + b_{xxxxy} y\left( {\left( {x^{4} - {{3x^{2} } \mathord{\left/ {\vphantom {{3x^{2} } {14}}} \right. \kern-\nulldelimiterspace} {14}} + {3 \mathord{\left/ {\vphantom {3 {560}}} \right. \kern-\nulldelimiterspace} {560}}} \right) - {1 \mathord{\left/ {\vphantom {1 {70}}} \right. \kern-\nulldelimiterspace} {70}}} \right) + b_{xxyyy} \left( {y^{3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)\left( {1 - 4x^{2} } \right). \end{aligned} \right.$$
(16)

Note that the modes \(a_{xyy}\) and \(b_{xxy}\) correspond to zone-centered modes that carry the \(xy^{2}\) and \(x^{2} y\) variation. There are 16 coefficients in the above equations and we need a strategy for fixing them up. The curl now becomes

$$\begin{aligned} \left( {\nabla \times {\mathbf{V}}} \right)_{z} &= \frac{{\partial V^{y} }}{\partial x} - \frac{{\partial V^{x} }}{\partial y} = \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right] \\ & \quad+ \left[ {\left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right) - 8b_{xx} - 2{{b_{xxxx} } \mathord{\left/ {\vphantom {{b_{xxxx} } 5}} \right. \kern-\nulldelimiterspace} 5}} \right]x \\ &\quad + \left[ {\left( {\Delta_{y} V_{y}^{2} } \right) - \left( {\Delta_{y} V_{y}^{1} } \right) + 8a_{yy} + 2{{a_{yyyy} } \mathord{\left/ {\vphantom {{a_{yyyy} } 5}} \right. \kern-\nulldelimiterspace} 5}} \right]y \\ &\quad + \left[ {\left( {\Delta_{xx} V_{x}^{1} } \right) - \left( {\Delta_{xx} V_{x}^{2} } \right) - 12b_{xxx} } \right]\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ &\quad + \left[ { - \left( {\Delta_{yy} V_{y}^{1} } \right) + \left( {\Delta_{yy} V_{y}^{2} } \right) + 12a_{yyy} } \right]\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ &\quad + \left[ {8\left( {a_{xyy} - b_{xxy} } \right) - {{6\left( {a_{xyyyyy} - b_{xxxxy} } \right)} \mathord{\left/ {\vphantom {{6\left( {a_{xyyyyy} - b_{xxxxy} } \right)} {35}}} \right. \kern-\nulldelimiterspace} {35}}} \right]xy \\ &\quad + \left[ {\left( {\Delta_{xxx} V_{x}^{1} } \right) - \left( {\Delta_{xxx} V_{x}^{2} } \right) - 16b_{xxxx} } \right]\left( {x^{3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right) \\ & \quad + \left[ { - \left( {\Delta_{yyy} V_{y}^{1} } \right) + \left( {\Delta_{yyy} V_{y}^{2} } \right) + 16a_{yyyy} } \right]\left( {y^{3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right) \\& \quad + \left[ {8a_{xxyy} - 12b_{xxxy} } \right]y\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ &\quad + \left[ { - 8b_{xxyy} + 12a_{xyyy} } \right]x\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\& \quad + \left[ {8a_{xxxyy} + 4b_{xxxxy} } \right]\left( {x^{3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)y \\ & \quad + \left[ { - 8b_{xxyyy} - 4a_{xyyyy} } \right]\left( {y^{3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)x. \end{aligned}$$
(17)

As with Eq. (14), we can now reconstruct the discrete circulation up to and including quadratic variation over each zone and including the minimal number of cubic modes that arise in Eq. (17), and write the result as

$$\begin{aligned} R^{z} \left( {x,y} \right) &= \left[ {V_{x}^{1} - V_{x}^{2} + V_{y}^{2} - V_{y}^{1} } \right] + \left( {\Delta_{x} R^{z} } \right)x + \left( {\Delta_{y} R^{z} } \right)y + \left( {\Delta_{xx} R^{z} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ &\quad + \left( {\Delta_{yy} R^{z} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \left( {\Delta_{xy} R^{z} } \right)xy + \left( {\Delta_{xxx} R^{z} } \right)\left( {x^{3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right) \\ &\quad+ \left( {\Delta_{yyy} R^{z} } \right)\left( {y^{3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right) + \left( {\Delta_{xxy} R^{z} } \right)y\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\& \quad + \left( {\Delta_{xyy} R^{z} } \right)x\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right). \end{aligned}$$
(18)

Equating like terms in Eqs. (17) and (18) gives us 11 equations. Therefore, we see that at fourth (and higher) orders the curl constraints, by themselves, do not give us sufficient information for uniquely fixing up the 16 coefficients in Eq. (16). However, we expect a solution which has five free parameters that can be fixed using some other logic, which we will describe shortly. The parametric solution can be written quite easily if we introduce a parameter \(\alpha\) defined by \(\alpha = a_{xxxyy} + b_{xxyyy}\). We can then write the entire solution in terms of the five parameters \(a_{xyy}\), \(b_{xxy}\), \(a_{xxyy}\), \(b_{xxyy}\) and \(\alpha\) as follows:

$$\left\{\begin{gathered} a_{xxxyy} = \frac{1}{24}\left[ {12\alpha + 280a_{xyy} - 280b_{xxy} - 35\left( {\Delta_{xy} R^{z} } \right)} \right]{;}\hfill \\ b_{xxyyy} = \frac{1}{24}\left[ {12\alpha - 280a_{xyy} + 280b_{xxy} + 35\left( {\Delta_{xy} R^{z} } \right)} \right]{;}\quad a_{xyyyy} = - 2b_{xxyyy} {;}\;b_{xxxxy} = - 2a_{xxxyy} {; } \hfill \\ a_{yyyy} = \frac{1}{16}\left[ {\left( {\Delta_{yyy} R^{z} } \right) + \left( {\Delta_{yyy} V_{y}^{1} } \right) - \left( {\Delta_{yyy} V_{y}^{2} } \right)} \right]{;}\quad b_{xxxx} = \frac{1}{16}\left[ { - \left( {\Delta_{xxx} R^{z} } \right) + \left( {\Delta_{xxx} V_{x}^{1} } \right) - \left( {\Delta_{xxx} V_{x}^{2} } \right)} \right]{;} \hfill \\ a_{xyyy} = \frac{1}{12}\left[ {8b_{xxyy} + \left( {\Delta_{xyy} R^{z} } \right)} \right]{;}\quad b_{xxxy} = \frac{1}{12}\left[ {8a_{xxyy} - \left( {\Delta_{xxy} R^{z} } \right)} \right]{;} \hfill \\ a_{yyy} = \frac{1}{12}\left[ {\left( {\Delta_{yy} R^{z} } \right) + \left( {\Delta_{yy} V_{y}^{1} } \right) - \left( {\Delta_{yy} V_{y}^{2} } \right)} \right]{;}\quad b_{xxx} = \frac{1}{12}\left[ { - \left( {\Delta_{xx} R^{z} } \right) + \left( {\Delta_{xx} V_{x}^{1} } \right) - \left( {\Delta_{xx} V_{x}^{2} } \right)} \right]{;} \hfill \\ a_{yy} = \frac{1}{320}\left[ {40\left( {\Delta_{y} V_{y}^{1} } \right) - 40\left( {\Delta_{y} V_{y}^{2} } \right) - \left( {\Delta_{yyy} V_{y}^{1} } \right) + \left( {\Delta_{yyy} V_{y}^{2} } \right) + 40\left( {\Delta_{y} R^{z} } \right) - \left( {\Delta_{yyy} R^{z} } \right)} \right]{;} \hfill b_{xx} = \frac{1}{320}\left[ {40\left( {\Delta_{x} V_{x}^{1} } \right) - 40\left( {\Delta_{x} V_{x}^{2} } \right) - \left( {\Delta_{xxx} V_{x}^{1} } \right) + \left( {\Delta_{xxx} V_{x}^{2} } \right) - 40\left( {\Delta_{x} R^{z} } \right) + \left( {\Delta_{xxx} R^{z} } \right)} \right]. \hfill \\ \end{gathered} \right.$$
(19)

Up to this point in the narrative, we have left the five parameters \(a_{xyy}\), \(b_{xxy}\), \(a_{xxyy}\), \(b_{xxyy}\) and \(\alpha\) undetermined. They will only be fixed after we make the following consideration. The vector field in Eq. (16) includes modes that reside on the edges of the mesh and modes that are zone-centered. It is, therefore, interesting to ask how both kinds of modes (edge-centered and zone-centered) can be accommodated seamlessly in a WENO-like or DG-like scheme? Indeed, we get a valuable new insight by addressing this question. Realize that the vector field in Eq. (16) can also be decomposed in terms of orthogonal Legendre polynomials as follows:

$$\begin{aligned}{V^x}\left( {x,y} \right) &= \left[ {{{\left( {V_x^1 + V_x^2} \right)} \mathord{\left/{\vphantom {{\left( {V_x^1 + V_x^2} \right)} {2 + {{\left( {\left( {{\Delta _y}{R^z}} \right) + \left( {{\Delta _y}V_y^1} \right) - \left( {{\Delta _y}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _y}{R^z}} \right) + \left( {{\Delta _y}V_y^1} \right) - \left( {{\Delta _y}V_y^2} \right)} \right)} {12}}} \right. \kern-\nulldelimiterspace} {12}}}}} \right. \kern-\nulldelimiterspace} {2 + {{\left( {\left( {{\Delta _y}{R^z}} \right) + \left( {{\Delta _y}V_y^1} \right) - \left( {{\Delta _y}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _y}{R^z}} \right) + \left( {{\Delta _y}V_y^1} \right) - \left( {{\Delta _y}V_y^2} \right)} \right)} {12}}} \right. \kern-\nulldelimiterspace} {12}}}}} \right]\\ &\quad + \left[ {{{\left( {\left( {{\Delta _x}V_x^1} \right) + \left( {{\Delta _x}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _x}V_x^1} \right) + \left( {{\Delta _x}V_x^2} \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {{\Delta _{xy}}{R^z}} \right)} \mathord{\left/ {\vphantom {{\left( {{\Delta _{xy}}{R^z}} \right)} {24}}} \right. \kern-\nulldelimiterspace} {24}} + {\alpha \mathord{\left/ {\vphantom {\alpha {70}}} \right. \kern-\nulldelimiterspace} {70}} + {{\left( {{a_{xyy}} + {b_{xxy}}} \right)} \mathord{\left/ {\vphantom {{\left( {{a_{xyy}} + {b_{xxy}}} \right)} 3}} \right. \kern-\nulldelimiterspace} 3}} \right]x\\ &\quad + \left[ { - V_x^1 + V_x^2 + {{\left( {\left( {{\Delta _{yy}}{R^z}} \right) + \left( {{\Delta _{yy}}V_y^1} \right) - \left( {{\Delta _{yy}}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{yy}}{R^z}} \right) + \left( {{\Delta _{yy}}V_y^1} \right) - \left( {{\Delta _{yy}}V_y^2} \right)} \right)} {30}}} \right. \kern-\nulldelimiterspace} {30}}} \right]y\\&\quad + \left[ {{{2{a_{xxyy}}} \mathord{\left/{\vphantom {{2{a_{xxyy}}} 3}} \right. \kern-\nulldelimiterspace} 3} + {{\left( {\left( {{\Delta _{xx}}V_x^1} \right) + \left( {{\Delta _{xx}}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{xx}}V_x^1} \right) + \left( {{\Delta _{xx}}V_x^2} \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2}} \right]\left( {{x^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\\&\quad + \left[ \begin{array}{l}{{\left( {\left( {{\Delta _{yyy}}{R^z}} \right) + \left( {{\Delta _{yyy}}V_y^1} \right) - \left( {{\Delta _{yyy}}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{yyy}}{R^z}} \right) + \left( {{\Delta _{yyy}}V_y^1} \right) - \left( {{\Delta _{yyy}}V_y^2} \right)} \right)} {112}}} \right. \kern-\nulldelimiterspace} {112}}\\ - {{\left( {40\left( {{\Delta _y}V_y^1} \right) - 40\left( {{\Delta _y}V_y^2} \right) - \left( {{\Delta _{yyy}}V_y^1} \right) + \left( {{\Delta _{yyy}}V_y^2} \right) + 40\left( {{\Delta _y}{R^z}} \right) - \left( {{\Delta _{yyy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {40\left( {{\Delta _y}V_y^1} \right) - 40\left( {{\Delta _y}V_y^2} \right) - \left( {{\Delta _{yyy}}V_y^1} \right) + \left( {{\Delta _{yyy}}V_y^2} \right) + 40\left( {{\Delta _y}{R^z}} \right) - \left( {{\Delta _{yyy}}{R^z}} \right)} \right)} {80}}} \right. \kern-\nulldelimiterspace} {80}}\end{array} \right]\left( {{y^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\\&\quad + \left[ { - \left( {{\Delta _x}V_x^1} \right) + \left( {{\Delta _x}V_x^2} \right) + {{\left( {8{b_{xxyy}} + \left( {{\Delta _{xyy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {8{b_{xxyy}} + \left( {{\Delta _{xyy}}{R^z}} \right)} \right)} {30}}} \right. \kern-\nulldelimiterspace} {30}}} \right]xy\\&\quad + \left[ {{{\left( {\left( {{\Delta _{xxx}}V_x^1} \right) + \left( {{\Delta _{xxx}}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{xxx}}V_x^1} \right) + \left( {{\Delta _{xxx}}V_x^2} \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {12\alpha + 280{a_{xyy}} - 280{b_{xxy}} - 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha + 280{a_{xyy}} - 280{b_{xxy}} - 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} {36}}} \right. \kern-\nulldelimiterspace} {36}}} \right]\left( {{x^3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)\\&\quad + \left[ { - {{\left( {\left( {{\Delta _{yy}}{R^z}} \right) + \left( {{\Delta _{yy}}V_y^1} \right) - \left( {{\Delta _{yy}}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{yy}}{R^z}} \right) + \left( {{\Delta _{yy}}V_y^1} \right) - \left( {{\Delta _{yy}}V_y^2} \right)} \right)} 3}} \right. \kern-\nulldelimiterspace} 3}} \right]\left( {{y^3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)\\ &\quad + \left[ { - \left( {{\Delta _{xx}}V_x^1} \right) + \left( {{\Delta _{xx}}V_x^2} \right)} \right]\left( {{x^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)y + \left[ { - 4{a_{xyy}}} \right]\left( {{y^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)x\\&\quad + \left[ { - {{\left( {\left( {{\Delta _{yyy}}{R^z}} \right) + \left( {{\Delta _{yyy}}V_y^1} \right) - \left( {{\Delta _{yyy}}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{yyy}}{R^z}} \right) + \left( {{\Delta _{yyy}}V_y^1} \right) - \left( {{\Delta _{yyy}}V_y^2} \right)} \right)} 4}} \right. \kern-\nulldelimiterspace} 4}} \right]\left( {{y^4} - {{3{y^2}} \mathord{\left/ {\vphantom {{3{y^2}} {14}}} \right. \kern-\nulldelimiterspace} {14}} + {3 \mathord{\left/ {\vphantom {3 {560}}} \right. \kern-\nulldelimiterspace} {560}}} \right) \\ &\quad+ \left[ { - \left( {{\Delta _{xxx}}V_x^1} \right) + \left( {{\Delta _{xxx}}V_x^2} \right)} \right]\left( {{x^3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)y + \left[ { - {{\left( {8{b_{xxyy}} + \left( {{\Delta _{xyy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {8{b_{xxyy}} + \left( {{\Delta _{xyy}}{R^z}} \right)} \right)} 3}} \right. \kern-\nulldelimiterspace} 3}} \right]\left( {{y^3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)x\\ & \quad + \left[ { - 4{a_{xxyy}}} \right]\left( {{x^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\left( {{y^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\\&\quad + \left[ { - {{\left( {12\alpha - 280{a_{xyy}} + 280{b_{xxy}} + 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha - 280{a_{xyy}} + 280{b_{xxy}} + 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right]x\left( {{y^4} - {{3{y^2}} \mathord{\left/ {\vphantom {{3{y^2}} {14}}} \right. \kern-\nulldelimiterspace} {14}} + {3 \mathord{\left/ {\vphantom {3 {560}}} \right. \kern-\nulldelimiterspace} {560}}} \right)\\ &\quad + \left[ { - {{\left( {12\alpha + 280{a_{xyy}} - 280{b_{xxy}} - 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha + 280{a_{xyy}} - 280{b_{xxy}} - 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} 6}} \right. \kern-\nulldelimiterspace} 6}} \right]\left( {{x^3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)\left( {{y^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right),\end{aligned}$$
(20a)
$$\begin{aligned}{V^y}\left( {x,y} \right) &= \left[ {{{\left( {V_y^1 + V_y^2} \right)} \mathord{\left/ {\vphantom {{\left( {V_y^1 + V_y^2} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( { - \left( {{\Delta _x}{R^z}} \right) + \left( {{\Delta _x}V_x^1} \right) - \left( {{\Delta _x}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( { - \left( {{\Delta _x}{R^z}} \right) + \left( {{\Delta _x}V_x^1} \right) - \left( {{\Delta _x}V_x^2} \right)} \right)} {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right]\\ &\quad+ \left[ { - V_y^1 + V_y^2 + {{\left( { - \left( {{\Delta _{xx}}{R^z}} \right) + \left( {{\Delta _{xx}}V_x^1} \right) - \left( {{\Delta _{xx}}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( { - \left( {{\Delta _{xx}}{R^z}} \right) + \left( {{\Delta _{xx}}V_x^1} \right) - \left( {{\Delta _{xx}}V_x^2} \right)} \right)} {30}}} \right. \kern-\nulldelimiterspace} {30}}} \right]x\\ &\quad+ \left[ {{{\left( {\left( {{\Delta _y}V_y^1} \right) + \left( {{\Delta _y}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _y}V_y^1} \right) + \left( {{\Delta _y}V_y^2} \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} - {{\left( {{\Delta _{xy}}{R^z}} \right)} \mathord{\left/ {\vphantom {{\left( {{\Delta _{xy}}{R^z}} \right)} {24}}} \right. \kern-\nulldelimiterspace} {24}} + {\alpha \mathord{\left/ {\vphantom {\alpha {70}}} \right. \kern-\nulldelimiterspace} {70}} + {{\left( {{a_{xyy}} + {b_{xxy}}} \right)} \mathord{\left/ {\vphantom {{\left( {{a_{xyy}} + {b_{xxy}}} \right)} 3}} \right. \kern-\nulldelimiterspace} 3}} \right]y\\ &\quad+ \left[ \begin{array}{l}{{\left( { - \left( {{\Delta _{xxx}}{R^z}} \right) + \left( {{\Delta _{xxx}}V_x^1} \right) - \left( {{\Delta _{xxx}}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( { - \left( {{\Delta _{xxx}}{R^z}} \right) + \left( {{\Delta _{xxx}}V_x^1} \right) - \left( {{\Delta _{xxx}}V_x^2} \right)} \right)} {122}}} \right. \kern-\nulldelimiterspace} {122}}\\ - {{\left( {40\left( {{\Delta _x}V_x^1} \right) - 40\left( {{\Delta _x}V_x^2} \right) - \left( {{\Delta _{xxx}}V_x^1} \right) + \left( {{\Delta _{xxx}}V_x^2} \right) - 40\left( {{\Delta _x}{R^z}} \right) + \left( {{\Delta _{xxx}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {40\left( {{\Delta _x}V_x^1} \right) - 40\left( {{\Delta _x}V_x^2} \right) - \left( {{\Delta _{xxx}}V_x^1} \right) + \left( {{\Delta _{xxx}}V_x^2} \right) - 40\left( {{\Delta _x}{R^z}} \right) + \left( {{\Delta _{xxx}}{R^z}} \right)} \right)} {80}}} \right. \kern-\nulldelimiterspace} {80}}\end{array} \right]\left( {{x^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\\ &\quad+ \left[ {{{2{b_{xxyy}}} \mathord{\left/ {\vphantom {{2{b_{xxyy}}} 3}} \right. \kern-\nulldelimiterspace} 3} + {{\left( {\left( {{\Delta _{yy}}V_y^1} \right) + \left( {{\Delta _{yy}}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{yy}}V_y^1} \right) + \left( {{\Delta _{yy}}V_y^2} \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2}} \right]\left( {{y^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ &\quad + \left[ { - \left( {{\Delta _y}V_y^1} \right) + \left( {{\Delta _y}V_y^2} \right) + {{\left( {8{a_{xxyy}} - \left( {{\Delta _{xxy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {8{a_{xxyy}} - \left( {{\Delta _{xxy}}{R^z}} \right)} \right)} {30}}} \right. \kern-\nulldelimiterspace} {30}}} \right]xy\\&\quad + \left[ {{{ - \left( { - \left( {{\Delta _{xx}}{R^z}} \right) + \left( {{\Delta _{xx}}V_x^1} \right) - \left( {{\Delta _{xx}}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{ - \left( { - \left( {{\Delta _{xx}}{R^z}} \right) + \left( {{\Delta _{xx}}V_x^1} \right) - \left( {{\Delta _{xx}}V_x^2} \right)} \right)} 3}} \right. \kern-\nulldelimiterspace} 3}} \right]\left( {{x^3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)\\ &\quad+ \left[ {{{\left( {\left( {{\Delta _{yyy}}V_y^1} \right) + \left( {{\Delta _{yyy}}V_y^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {{\Delta _{yyy}}V_y^1} \right) + \left( {{\Delta _{yyy}}V_y^2} \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {12\alpha - 280{a_{xyy}} + 280{b_{xxy}} + 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha - 280{a_{xyy}} + 280{b_{xxy}} + 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} {36}}} \right. \kern-\nulldelimiterspace} {36}}} \right]\left( {{y^3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)\\ &\quad+ \left[ { - 4{b_{xxy}}} \right]\left( {{x^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)y + \left[ { - \left( {{\Delta _{yy}}V_y^1} \right) + \left( {{\Delta _{yy}}V_y^2} \right)} \right]\left( {{y^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)x\\ &\quad+ \left[ { - {{\left( { - \left( {{\Delta _{xxx}}{R^z}} \right) + \left( {{\Delta _{xxx}}V_x^1} \right) - \left( {{\Delta _{xxx}}V_x^2} \right)} \right)} \mathord{\left/ {\vphantom {{\left( { - \left( {{\Delta _{xxx}}{R^z}} \right) + \left( {{\Delta _{xxx}}V_x^1} \right) - \left( {{\Delta _{xxx}}V_x^2} \right)} \right)} 4}} \right. \kern-\nulldelimiterspace} 4}} \right]\left( {{x^4} - {{3{x^2}} \mathord{\left/ {\vphantom {{3{x^2}} {14}}} \right. \kern-\nulldelimiterspace} {14}} + {3 \mathord{\left/ {\vphantom {3 {560}}} \right. \kern-\nulldelimiterspace} {560}}} \right) \\ &\quad + \left[ { - {{\left( {8{a_{xxyy}} - \left( {{\Delta _{xxy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {8{a_{xxyy}} - \left( {{\Delta _{xxy}}{R^z}} \right)} \right)} 3}} \right. \kern-\nulldelimiterspace} 3}} \right]\left( {{x^3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)y\\ &\quad+ \left[ { - \left( {{\Delta _{yyy}}V_y^1} \right) + \left( {{\Delta _{yyy}}V_y^2} \right)} \right]\left( {{y^3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right)x + \left[ { - 4{b_{xxyy}}} \right]\left( {{x^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\left( {{y^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\\ &\quad+ \left[ { - {{\left( {12\alpha + 280{a_{xyy}} - 280{b_{xxy}} - 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha + 280{a_{xyy}} - 280{b_{xxy}} - 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right]y\left( {{x^4} - {{3{x^2}} \mathord{\left/ {\vphantom {{3{x^2}} {14}}} \right. \kern-\nulldelimiterspace} {14}} + {3 \mathord{\left/ {\vphantom {3 {560}}} \right. \kern-\nulldelimiterspace} {560}}} \right)\\ &\quad+ \left[ { - {{\left( {12\alpha - 280{a_{xyy}} + 280{b_{xxy}} + 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha - 280{a_{xyy}} + 280{b_{xxy}} + 35\left( {{\Delta _{xy}}{R^z}} \right)} \right)} 6}} \right. \kern-\nulldelimiterspace} 6}} \right]\left( {{x^2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)\left( {{y^3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right).\end{aligned}$$
(20b)

The above two equations give us all the modes that are present in the curl-preserving reconstruction of the vector field. Notice that the 2nd, 4th, 6th, 7th and 10th terms in \(V^{x} \left( {x,y} \right)\) as well as the 3rd, 5th, 6th, 8th and 9th terms in \(V^{y} \left( {x,y} \right)\) are only specified parametrically in terms of the five parameters \(a_{xyy}\), \(b_{xxy}\), \(a_{xxyy}\), \(b_{xxyy}\) and \(\alpha\). In other words, the edge-centered vector field components do not fix those modes. Some additional information should be gleaned from the zone-centered formulation of the hyperbolic system. (Interestingly, this is also true for fourth and higher order divergence-preserving reconstruction in CED.)

First, notice that even without specifying \(a_{xyy}\), \(b_{xxy}\), \(a_{xxyy}\), \(b_{xxyy}\) and \(\alpha\) we can still use Eq. (20) to write the zone-averaged values for the two vector components as

$$\left\{\begin{gathered} \left\langle {V^{x} \left( {x,y} \right)} \right\rangle = {{\left( {V_{x}^{1} + V_{x}^{2} } \right)} \mathord{\left/ {\vphantom {{\left( {V_{x}^{1} + V_{x}^{2} } \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {\left( {\Delta_{y} V_{y}^{1} } \right) - \left( {\Delta_{y} V_{y}^{2} } \right) + \left( {\Delta_{y} R^{z} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{y} V_{y}^{1} } \right) - \left( {\Delta_{y} V_{y}^{2} } \right) + \left( {\Delta_{y} R^{z} } \right)} \right)} {12}}} \right. \kern-\nulldelimiterspace} {12}}, \hfill \\ \left\langle {V^{y} \left( {x,y} \right)} \right\rangle = {{\left( {V_{y}^{1} + V_{y}^{2} } \right)} \mathord{\left/ {\vphantom {{\left( {V_{y}^{1} + V_{y}^{2} } \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {\left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right) - \left( {\Delta_{x} R^{z} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right) - \left( {\Delta_{x} R^{z} } \right)} \right)} {12.}}} \right. \kern-\nulldelimiterspace} {12.}} \hfill \\ \end{gathered} \right.$$
(21)

Therefore, the zone-averages of the vector field are indeed fully specified by the edge values and the higher order moments in the edges.

Next, notice that the curl-constrained, edge-based vector components have not fully pinned down the 2nd, 4th, 6th, 7th and 10th terms in \(V^{x} \left( {x,y} \right)\); nor have they fully pinned down the 3rd, 5th, 6th, 8th and 9th terms in \(V^{y} \left( {x,y} \right)\). Therefore, owing to the mass matrix being diagonal for the expansion in Eqs. (20a) and (20b), we can indeed use a traditional, FV-based DG scheme to evolve the first ten moments in those equations. Such a DG scheme would be evolved as an auxiliary scheme to the edge-based DG-like scheme and is intended to help pin down the moments that cannot be specified exclusively by the edge-based DG-like scheme. Let us denote those modes with a superscript of “FV”. Since we seek the maximum concordance between the zone-centered DG scheme and the edge-centered DG-like scheme. This is done by requiring that the following ten linear equations should have their residuals minimized in a least squares sense:

$$\left\{ \begin{gathered} {{\left( {\left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {\Delta_{xy} R^{z} } \right)} \mathord{\left/ {\vphantom {{\left( {\Delta_{xy} R^{z} } \right)} {24}}} \right. \kern-\nulldelimiterspace} {24}} + {\alpha \mathord{\left/ {\vphantom {\alpha {70}}} \right. \kern-\nulldelimiterspace} {70}} + {{\left( {a_{xyy} + b_{xxy} } \right)} \mathord{\left/ {\vphantom {{\left( {a_{xyy} + b_{xxy} } \right)} 3}} \right. \kern-\nulldelimiterspace} 3} = \left( {\Delta_{x} V_{x}^\text{FV} } \right){;} \hfill \\ {{2a_{xxyy} } \mathord{\left/ {\vphantom {{2a_{xxyy} } 3}} \right. \kern-\nulldelimiterspace} 3} + {{\left( {\left( {\Delta_{xx} V_{x}^{1} } \right) + \left( {\Delta_{xx} V_{x}^{2} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{xx} V_{x}^{1} } \right) + \left( {\Delta_{xx} V_{x}^{2} } \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} = \left( {\Delta_{xx} V_{x}^\text{FV} } \right){;} \hfill \\ - \left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right) + {{\left( {8b_{xxyy} + \left( {\Delta_{xyy} R^{z} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {8b_{xxyy} + \left( {\Delta_{xyy} R^{z} } \right)} \right)} {30}}} \right. \kern-\nulldelimiterspace} {30}} = \left( {\Delta_{xy} V_{x}^\text{FV} } \right){;} \hfill \\ {{\left( {\left( {\Delta_{xxx} V_{x}^{1} } \right) + \left( {\Delta_{xxx} V_{x}^{2} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{xxx} V_{x}^{1} } \right) + \left( {\Delta_{xxx} V_{x}^{2} } \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {12\alpha + 280a_{xyy} - 280b_{xxy} - 35\left( {\Delta_{xy} R^{z} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha + 280a_{xyy} - 280b_{xxy} - 35\left( {\Delta_{xy} R^{z} } \right)} \right)} {36}}} \right. \kern-\nulldelimiterspace} {36}} = \left( {\Delta_{xxx} V_{x}^\text{FV} } \right){;} \hfill \\ - 4a_{xyy} = \left( {\Delta_{xyy} V_{x}^\text{FV} } \right){;} \hfill \\ {{\left( {\left( {\Delta_{y} V_{y}^{1} } \right) + \left( {\Delta_{y} V_{y}^{2} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{y} V_{y}^{1} } \right) + \left( {\Delta_{y} V_{y}^{2} } \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} - {{\left( {\Delta_{xy} R^{z} } \right)} \mathord{\left/ {\vphantom {{\left( {\Delta_{xy} R^{z} } \right)} {24}}} \right. \kern-\nulldelimiterspace} {24}} + {\alpha \mathord{\left/ {\vphantom {\alpha {70}}} \right. \kern-\nulldelimiterspace} {70}} + {{\left( {a_{xyy} + b_{xxy} } \right)} \mathord{\left/ {\vphantom {{\left( {a_{xyy} + b_{xxy} } \right)} 3}} \right. \kern-\nulldelimiterspace} 3} = \left( {\Delta_{y} V_{y}^\text{FV} } \right){;} \hfill \\ {{2b_{xxyy} } \mathord{\left/ {\vphantom {{2b_{xxyy} } 3}} \right. \kern-\nulldelimiterspace} 3} + {{\left( {\left( {\Delta_{yy} V_{y}^{1} } \right) + \left( {\Delta_{yy} V_{y}^{2} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{yy} V_{y}^{1} } \right) + \left( {\Delta_{yy} V_{y}^{2} } \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} = \left( {\Delta_{yy} V_{y}^\text{FV} } \right){;} \hfill \\ - \left( {\Delta_{y} V_{y}^{1} } \right) + \left( {\Delta_{y} V_{y}^{2} } \right) + {{\left( {8a_{xxyy} - \left( {\Delta_{xxy} R^{z} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {8a_{xxyy} - \left( {\Delta_{xxy} R^{z} } \right)} \right)} {30}}} \right. \kern-\nulldelimiterspace} {30}} = \left( {\Delta_{xy} V_{y}^\text{FV} } \right){;} \hfill \\ {{\left( {\left( {\Delta_{yyy} V_{y}^{1} } \right) + \left( {\Delta_{yyy} V_{y}^{2} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {\left( {\Delta_{yyy} V_{y}^{1} } \right) + \left( {\Delta_{yyy} V_{y}^{2} } \right)} \right)} 2}} \right. \kern-\nulldelimiterspace} 2} + {{\left( {12\alpha - 280a_{xyy} + 280b_{xxy} + 35\left( {\Delta_{xy} R^{z} } \right)} \right)} \mathord{\left/ {\vphantom {{\left( {12\alpha - 280a_{xyy} + 280b_{xxy} + 35\left( {\Delta_{xy} R^{z} } \right)} \right)} {36}}} \right. \kern-\nulldelimiterspace} {36}} = \left( {\Delta_{yyy} V_{y}^\text{FV} } \right){;} \hfill \\ - 4b_{xxy} = \left( {\Delta_{xxy} V_{y}^\text{FV} } \right){. } \hfill \\ \end{gathered}\right.$$
(22)

We see that there are only five free parameters (\(a_{xyy}\), \(b_{xxy}\), \(a_{xxyy}\), \(b_{xxyy}\) and \(\alpha\)) in the above ten equations with the result that they cannot be satisfied exactly; therefore, the least squares minimization is our best option. The least squares procedure is justified because any FV higher order reconstruction is already quite accurate; therefore, it preserves the curl constraint reasonably closely, though not exactly. The least squares procedure just does the extra little bit to keep the curl constraint exactly satisfied while bringing all the moments in Eq. (20) as close as possible to their FV counterparts. Section 5 shows that the use of the least squares procedure does not affect the accuracy of the final fourth order scheme. Since the equations are linear in the five free parameters, the optimal parameters can be written explicitly as

$$\left\{ \begin{aligned} a_{xyy} \,=\, & \left( {27\;811\;175\left( {\Delta_{xy} R^{z} } \right) - } \right.4\;799\;550\left( {\Delta_{x} V_{x}^{1} } \right) - 6\;945\;750\left( {\Delta_{xxx} V_{x}^{1} } \right) - 4\;799\;550\left( {\Delta_{y} V_{y}^{1} } \right) \\ & + \;357\;140\left( {\Delta_{yyy} V_{y}^{1} } \right) - 4\;799\;550\left( {\Delta_{x} V_{x}^{2} } \right) - 6\;945\;750\left( {\Delta_{xxx} V_{x}^{2} } \right) - 4\;799\;550\left( {\Delta_{y} V_{y}^{2} } \right)\\& + 7\;\;357\;140\left( {\Delta_{yyy} V_{y}^{2} } \right) + 9\;599\;100\left( {\Delta_{x} V_{x}^\text{FV} } \right) + \, 13\;891\;500\left( {\Delta_{xxx} V_{x}^\text{FV} } \right) \\ & - 61\;378\;272\left( {\Delta_{xyy} V_{x}^\text{FV} } \right) - 54\;022\;500\left( {\Delta_{xxy} V_{y}^\text{FV} } \right) + \, 9\;599\;100\left( {\Delta_{y} V_{y}^\text{FV} } \right) \\& \left. { - 14\;714\;280\left( {\Delta_{yyy} V_{y}^\text{FV} } \right)} \right)/474\;401\;888{;} \\ b_{xxy} \,=\, & \left( { - 27\;811\;175\left( {\Delta_{xy} R^{z} } \right) - 4} \right.799\;550\left( {\Delta_{x} V_{x}^{1} } \right) + 7\;357\;140\left( {\Delta_{xxx} V_{x}^{1} } \right) - 4\;799\;550\left( {\Delta_{y} V_{y}^{1} } \right) \\ & - 6\;945\;750\left( {\Delta_{yyy} V_{y}^{1} } \right) - 4\;799\;550\left( {\Delta_{x} V_{x}^{2} } \right) + 7\;357\;140\left( {\Delta_{xxx} V_{x}^{2} } \right) - 4\;799\;550\left( {\Delta_{y} V_{y}^{2} } \right)\\ & - 6\;945\;750\left( {\Delta_{yyy} V_{y}^{2} } \right) + 9\;599\;100\left( {\Delta_{x} V_{x}^\text{FV} } \right) -\, 14\;714\;280\left( {\Delta_{xxx} V_{x}^\text{FV} } \right) \\ & - 54\;022\;500\left( {\Delta_{xyy} V_{x}^\text{FV} } \right) - 61\;378\;272\left( {\Delta_{xxy} V_{y}^\text{FV} } \right) + 9\;599\;100\left( {\Delta_{y} V_{y}^\text{FV} } \right) \\ & \left. { + 13\;891\;500\left( {\Delta_{yyy} V_{y}^\text{FV} } \right)} \right)/474\;401\;888{;} \\ a_{xxyy} \,= \,& \left( {2\left( {\Delta_{xxy} R^{z} } \right) - 7} \right.5\left( {\Delta_{xx} V_{x}^{1} } \right) + 60\left( {\Delta_{y} V_{y}^{1} } \right) - 75\left( {\Delta_{xx} V_{x}^{2} } \right) - 60\left( {\Delta_{y} V_{y}^{2} } \right) + 150\left( {\Delta_{xx} V_{x}^\text{FV} } \right) \left. { + 60\left( {\Delta_{xy} V_{y}^\text{FV} } \right)} \right)/116{;} \\ b_{xxyy} \,= \,& \left( { - 2\left( {\Delta_{xyy} R^{z} } \right) + 6} \right.0\left( {\Delta_{x} V_{x}^{1} } \right) - 75\left( {\Delta_{yy} V_{y}^{1} } \right) - 60\left( {\Delta_{x} V_{x}^{2} } \right) - 75\left( {\Delta_{yy} V_{y}^{2} } \right) + 60\left( {\Delta_{xy} V_{x}^\text{FV} } \right) \left. { + 150\left( {\Delta_{yy} V_{y}^\text{FV} } \right)} \right)/116{;} \\ \alpha \,=\, & - 105\left( {54\left( {\Delta_{x} V_{x}^{1} } \right) + 1} \right.295\left( {\Delta_{xxx} V_{x}^{1} } \right) + 54\left( {\Delta_{y} V_{y}^{1} } \right) + 1\;295\left( {\Delta_{yyy} V_{y}^{1} } \right) + 54\left( {\Delta_{x} V_{x}^{2} } \right) + 1\;295\left( {\Delta_{xxx} V_{x}^{2} } \right) \\& + 54\left( {\Delta_{y} V_{y}^{2} } \right) + 1\;295\left( {\Delta_{yyy} V_{y}^{2} } \right) - 108\left( {\Delta_{x} V_{x}^\text{FV} } \right) - 2\;590\left( {\Delta_{xxx} V_{x}^\text{FV} } \right) - 18\left( {\Delta_{xyy} V_{x}^\text{FV} } \right) \\ & - 18\left( {\Delta_{xxy} V_{y}^\text{FV} } \right) - 108\left( {\Delta_{y} V_{y}^\text{FV} } \right)\left. { - 2\;590\left( {\Delta_{yyy} V_{y}^\text{FV} } \right)} \right)/ \, 181\;624. \end{aligned} \right.$$
(23)

Once Eq. (23) gives us the optimized parameters, they can be substituted in Eq. (19) to obtain all the coefficients in the reconstruction. This gives us a complete strategy for the vector field reconstruction in an edge-collocated, WENO-like or DG-like, curl-constraint preserving scheme.

The previous paragraph has shown us how we obtain an edge-collocated, DG-like, curl-constraint preserving reconstruction. We now show that an edge-collocated, WENO-like, curl-constraint preserving reconstruction can also be designed. Realize that Eq. (21) can be used to obtain zone-averaged values for the vector field. Furthermore, these zone-averaged values can be obtained without regard to the five free parameters that are optimized via Eq. (22). The values from Eq. (21) can be used to carry out a conventional, FV, fourth order accurate WENO reconstruction and such a reconstruction provides all the moments that are required in the right-hand sides of Eq. (22). Therefore, one does not need to evolve any auxiliary system when constructing a fourth order, curl-constraint preserving WENO-like scheme. In Sect. 4 we show that a fourth order WENO-like curl-constraint preserving scheme that is based on this section does indeed meet its design accuracy. This completes our description of curl-preserving reconstruction at fourth order in two dimensions.

2.5 Combining Curl-Free Reconstruction and the Two-Dimensional Riemann Solver to Obtain a Multidimensionally Upwinded, Globally Curl-Free Scheme

When studying one-dimensional advection, it is indeed a very instructive to realize that one-dimensional upwinding from a one-dimensional Riemann solver yields a stable parabolized scheme. The transition to a higher order scheme for advection is then easy to justify with the inclusion of TVD or WENO limiters, as was shown by van Leer [41, 42], Jiang and Shu [39], Balsara and Shu [21], Balsara et al. [15]. As the order of accuracy of the reconstruction is increased, it is easy to see that the dissipative terms will become smaller. It is very desirable to show that an analogous plan exists for PDEs with a curl involution constraint on a vector field. Such a demonstration has to be multidimensional because the curl operator is only meaningful in two or more dimensions.

Let us begin by obtaining a very important insight from divergence-preserving vector fields. In their study of the induction equation for globally divergence-free MHD, Balsara and Käppeli [17] were able to show that multidimensional divergence-free reconstruction of the magnetic field at first order, coupled with a two-dimensional Riemann solver, also results in a stable scheme with the correct, multidimensionally parabolized, dissipation; see Sect. 4 of the above-mentioned paper. Because of the presence of these parabolic terms, the multidimensional Riemann solver always plays a stabilizing role in the induction equation. This showed us that the transition to higher order, by applying WENO-type or DG-type limiting, would indeed succeed for the induction equation. Notice that Balsara and Käppeli [17] have made a non-trivial demonstration, because the components of a divergence-free vector field are collocated at the faces of the mesh, which is quite different from the zone-centered collocation that is used in DG schemes for conservation laws.

The previous paragraph has shown us that divergence-free evolution of vector fields has been developed to a point where it has a solid footing. It is very desirable to show that vector fields that evolve in a curl-free fashion have a similar assurance. This will again be a non-trivial demonstration because the components of a curl-free vector field are indeed collocated at the edges of the mesh. This is indeed different from the zone-centered collocation that is used for conservation laws as well as the face-centered collocation that is used for mimetic schemes that support globally divergence-free evolution. (Curl constraint-preserving evolution is then just a matter of adding source terms to the curl-free evolution equations; so we do not consider that in this subsection.) Let us consider the simplest two-dimensional equations that give us curl-free evolution. They can be written as

$$\left\{\begin{gathered} \frac{{\partial J^{x} }}{\partial t} + \frac{{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \right)}}{\partial x} + {\text{v}}^{y} \left( {\frac{{\partial J^{x} }}{\partial y} - \frac{{\partial J^{y} }}{\partial x}} \right) = 0, \hfill \\ \frac{{\partial J^{y} }}{\partial t} + \frac{{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \right)}}{\partial y} + {\text{v}}^{x} \left( {\frac{{\partial J^{y} }}{\partial x} - \frac{{\partial J^{x} }}{\partial y}} \right) = 0. \hfill \\ \end{gathered}\right.$$
(24)

Here, for the purposes of our theoretical study in this subsection, we will take the velocity components \(\left( {{\text{v}}^{x} ,{\text{v}}^{y} } \right)\) to be constant. Let us view the update equations shown above in two space and one time direction. We also consider a uniform Cartesian mesh in the two spatial dimensions with zones of size \(\Delta x\) and \(\Delta y\) in the x- and y-directions. Let the timestep be of size \(\Delta t\). The first equation in Eq. (24) can be integrated along the x- and t-directions of the three-dimensional space-time mesh (2 space + 1 time dimensions). Since \(J_{x}\) is collocated at the x-edges of the mesh, the x-directional integration should, of course, coincide with the x-edges of the Cartesian mesh. As long as the curl is exactly zero, the \({\text{v}}^{y} \left( {{{\partial J^{x} } \mathord{\left/ {\vphantom {{\partial J^{x} } {\partial y}}} \right. \kern-\nulldelimiterspace} {\partial y}} - {{\partial J^{y} } \mathord{\left/ {\vphantom {{\partial J^{y} } {\partial x}}} \right. \kern-\nulldelimiterspace} {\partial x}}} \right)\) term in that equation will be exactly zero; and the \({{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \right)} \mathord{\left/ {\vphantom {{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \right)} {\partial x}}} \right. \kern-\nulldelimiterspace} {\partial x}}\) term is just a gradient applied in the x-direction. Similarly, the second equation in Eq. (24) can be integrated along the y- and t-directions of a three-dimensional space-time mesh. Since \(J_{y}\) is collocated at the y-edges of the mesh, the y-directional integration should, of course, coincide with the y-edges of the two-dimensional Cartesian mesh. As long as the curl is exactly zero, the \({\text{v}}^{x} \left( {{{\partial J^{y} } \mathord{\left/ {\vphantom {{\partial J^{y} } {\partial x}}} \right. \kern-\nulldelimiterspace} {\partial x}} - {{\partial J^{x} } \mathord{\left/ {\vphantom {{\partial J^{x} } {\partial y}}} \right. \kern-\nulldelimiterspace} {\partial y}}} \right)\) term in that equation will be exactly zero; and the \({{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \right)} \mathord{\left/ {\vphantom {{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \right)} {\partial y}}} \right. \kern-\nulldelimiterspace} {\partial y}}\) term is just a gradient applied in the y-direction. It is then easy to see that Eq. (24) ensures that if the same, properly upwinded, vertex-centered, values of the potential, defined in two dimensions by \(\phi \equiv {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \), are used at the corners of the mesh to update the x-edge centered \(J^{x}\) and the y-edge centered \(J^{y}\), then the update will be globally curl-free. (This is very similar to globally divergence-free update of the induction equation in MHD which requires the same, properly upwinded, edge-centered, electric fields to be used for the update of the face-centered components of the magnetic induction vector.)

Let us now consider constant velocity components with \({\text{v}}^{x} > 0\) and \({\text{v}}^{y} > 0\), just to keep our initial discussion simple. Equation (24) becomes

$$\left\{ \begin{gathered} \frac{{\partial J^{x} }}{\partial t} + {\text{v}}^{x} \frac{{\partial J^{x} }}{\partial x} + {\text{v}}^{y} \frac{{\partial J^{x} }}{\partial y} = 0, \hfill \\ \frac{{\partial J^{y} }}{\partial t} + {\text{v}}^{x} \frac{{\partial J^{y} }}{\partial x} + {\text{v}}^{y} \frac{{\partial J^{y} }}{\partial y} = 0. \hfill \\ \end{gathered}\right.$$
(25)

We see, therefore, that “properly upwinded” in this context means that each zone in Fig. 2 will contribute its \(J^{x}\) and \(J^{y}\) values to its top right corner in Fig. 2. We require that the first-order accurate curl-free reconstruction from Eq. (3) should be used in the zones \(\left( {i,j} \right)\), \(\left( {i - 1,j} \right)\), \(\left( {i - 1,j - 1} \right)\) and \(\left( {i,j - 1} \right)\) in Fig. 2. Figure 2 also catalogues the values of the potential \(\phi \equiv {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} } \) at all the vertices of zone \(\left( {i,j} \right)\). We are interested in the time update of the components \(J_{i,j - 1/2}^{x;n}\) and \(J_{i - 1/2,j}^{y;n}\) at the lower x-edge and lower y-edge of the zone \(\left( {i,j} \right)\), respectively. The subscripts in \(J_{i,j - 1/2}^{x;n}\) and \(J_{i - 1/2,j}^{y;n}\) indicate spatial collocation points on the mesh; the superscript of “n” denotes the nth timestep. The components of the vector field J are also indicated by “x” or “y” in the superscripts. We can write the discretized, first order in space and time, update equations as

$$\left\{ \begin{gathered} \frac{{J_{i,j - 1/2}^{x;n + 1} - J_{i,j - 1/2}^{x;n} }}{\Delta t} + \frac{{\phi_{i + 1/2,j - 1/2}^{n} - \phi_{i - 1/2,j - 1/2}^{n} }}{\Delta x} = 0, \hfill \\ \frac{{J_{i - 1/2,j}^{y;n + 1} - J_{i - 1/2,j}^{y;n} }}{\Delta t} + \frac{{\phi_{i - 1/2,j + 1/2}^{n} - \phi_{i - 1/2,j - 1/2}^{n} }}{\Delta x} = 0. \hfill \\ \end{gathered}\right.$$
(26)
Fig. 2
figure 2

The components of the curl-free vector field around the four zones (i, j), (− 1, j), (− 1, − 1) and (i, − 1). A first-order curl-free reconstruction is used. The multidimensionally upwinded potentials at the vertices of the zone (i, j) are also shown. The red dashed rectangle shows the effective control volume that is used for the update of \(J_{i,j - 1/2}^{x;n}\). The blue dashed rectangle shows the effective control volume that is used for the update of \(J_{i - 1/2,j}^{y;n}\)

Recall that we assume a uniform Cartesian mesh with zone sizes \(\Delta x\) and \(\Delta y\) in the x- and y-directions and a timestep of size \(\Delta t\). By substituting the upwinded potentials from Fig. 2, we get

$$\left\{\begin{gathered} \frac{{J_{i,j - 1/2}^{x;n + 1} - J_{i,j - 1/2}^{x;n} }}{\Delta t} + \frac{{ {\left( {{\text{v}}^{x} J_{i,j - 1/2}^{x;n} + {\text{v}}^{y} J_{i + 1/2,j - 1}^{y;n} } \right) - \left( {{\text{v}}^{x} J_{i - 1,j - 1/2}^{x;n} + {\text{v}}^{y} J_{i - 1/2,j - 1}^{y;n} } \right)} }}{\Delta x} = 0, \hfill \\ \frac{{J_{i - 1/2,j}^{y;n + 1} - J_{i - 1/2,j}^{y;n} }}{\Delta t} + \frac{{ {\left( {{\text{v}}^{x} J_{i - 1,j + 1/2}^{x;n} + {\text{v}}^{y} J_{i - 1/2,j}^{y;n} } \right) - \left( {{\text{v}}^{x} J_{i - 1,j - 1/2}^{x;n} + {\text{v}}^{y} J_{i - 1/2,j - 1}^{y;n} } \right)} }}{\Delta y} = 0. \hfill \\ \end{gathered} \right.$$
(27)

We now write the above equations in a format that allows us to see the velocity-dependence more clearly as follows:

$$\left\{ \begin{gathered} \frac{{J_{i,j - 1/2}^{x;n + 1} - J_{i,j - 1/2}^{x;n} }}{\Delta t} + \frac{{{\text{v}}^{x} }}{\Delta x}\left( {J_{i,j - 1/2}^{x;n} - J_{i - 1,j - 1/2}^{x;n} } \right) + \frac{{{\text{v}}^{y} }}{\Delta x}\left( {J_{i + 1/2,j - 1}^{y;n} - J_{i - 1/2,j - 1}^{y;n} } \right) = 0, \hfill \\ \frac{{J_{i - 1/2,j}^{y;n + 1} - J_{i - 1/2,j}^{y;n} }}{\Delta t} + \frac{{{\text{v}}^{x} }}{\Delta y}\left( {J_{i - 1,j + 1/2}^{x;n} - J_{i - 1,j - 1/2}^{x;n} } \right) + \frac{{{\text{v}}^{y} }}{\Delta y}\left( {J_{i - 1/2,j}^{y;n} - J_{i - 1/2,j - 1}^{y;n} } \right) = 0. \hfill \\ \end{gathered}\right.$$
(28)

The above equations still do not look like discretized versions of Eq. (25). As with the divergence-free evolution of vector fields, the concordance will only be established if the discrete circulations in the zones \(\left( {i,j - 1} \right)\) and \(\left( {i - 1,j} \right)\) are used in the first and second equations of Eq. (28). If we utilize the fact that the discrete circulations in those two zones are indeed zero, we can make the transcriptions

$$\left\{ \begin{gathered} \frac{1}{\Delta x}\left( {J_{i + 1/2,j - 1}^{y;n} - J_{i - 1/2,j - 1}^{y;n} } \right) \to \frac{1}{\Delta y}\left( {J_{i,j - 1/2}^{x;n} - J_{i,j - 3/2}^{x;n} } \right), \hfill \\ \frac{1}{\Delta y}\left( {J_{i - 1,j + 1/2}^{x;n} - J_{i - 1,j - 1/2}^{x;n} } \right) \to \frac{1}{\Delta x}\left( {J_{i - 1/2,j}^{y;n} - J_{i - 3/2,j}^{y;n} } \right). \hfill \\ \end{gathered}\right.$$
(29)

Inserting the transcriptions from Eq. (29) into Eq. (28), we now get

$$\left\{ \begin{gathered} \frac{{J_{i,j - 1/2}^{x;n + 1} - J_{i,j - 1/2}^{x;n} }}{\Delta t} + \frac{{{\text{v}}^{x} }}{\Delta x}\left( {J_{i,j - 1/2}^{x;n} - J_{i - 1,j - 1/2}^{x;n} } \right) + \frac{{{\text{v}}^{y} }}{\Delta y}\left( {J_{i,j - 1/2}^{x;n} - J_{i,j - 3/2}^{x;n} } \right) = 0, \hfill \\ \frac{{J_{i - 1/2,j}^{y;n + 1} - J_{i - 1/2,j}^{y;n} }}{\Delta t} + \frac{{{\text{v}}^{x} }}{\Delta x}\left( {J_{i - 1/2,j}^{y;n} - J_{i - 3/2,j}^{y;n} } \right) + \frac{{{\text{v}}^{y} }}{\Delta y}\left( {J_{i - 1/2,j}^{y;n} - J_{i - 1/2,j - 1}^{y;n} } \right) = 0. \hfill \\ \end{gathered}\right.$$
(30)

It is now easy to see that the first equation in Eq. (30) is just a first-order upwinded approximation for the time update of \(J_{i,j - 1/2}^{x;n}\). Please compare that equation to the first equation in Eq. (25). Also please envision it as an upwind scheme for \(J_{i,j - 1/2}^{x;n}\) applied to the red control volume in Fig. 2. It is also easy to see that the second equation in Eq. (30) is just a first-order upwinded approximation for the time update of \(J_{i - 1/2,j}^{y;n}\). Please compare that equation to the second equation in Eq. (25). Also please envision it as an upwind scheme for \(J_{i - 1/2,j}^{y;n}\) applied to the blue control volume in Fig. 2. The curl-free reconstruction which couples all components of the vector \({\mathbf{J}}\), along with the use of a unique upwinded potential \(\phi\) at the vertices of the mesh, makes the time-evolution curl-free. It is very important to understand the role of the curl-free reconstruction which couples all the edge-collocated components of the vector \({\mathbf{J}}\). It is similarly very important to understand the role of the uniquely defined, multidimensionally upwinded, potential \(\phi\) at each of the vertices of the mesh which couples all the update equations for all the components of \({\mathbf{J}}\). The two innovations work together to yield the globally curl-preserving scheme. We therefore see with the help of Fig. 2 that the curl-free reconstruction, along with multidimensional upwinding applied to the vertices of the mesh, gives us a globally curl-free update strategy for our model equations, i.e., Eq. (24). Realize too that the multidimensional Riemann solver is indeed designed to automate that multidimensional upwinding in the general case of a system of PDEs. Therefore, we realize that the curl-free reconstruction (and the edge-centered collocation of vector components that it entails), along with the application of a multidimensional Riemann solver, indeed gives us a stable, globally curl-free, mimetic update strategy for our curl-free model equations.

The discussion in the previous paragraph was restricted to first-order accuracy. To keep the discussion extremely accessible, we also drew on our notional understanding of multidimensional upwinding, and we kept all the velocities positive. In general, we will want to use a full multidimensional Riemann solver which can accommodate to waves propagating in a general hyperbolic system in any direction. Equations (12), (13) and (14) of Balsara [8] show how such a multidimensional Riemann solver can be designed for systems in the general case. The multidimensional Riemann solver from Balsara [8] works on Cartesian meshes. It was extended to unstructured meshes in Balsara and Dumbser [11]. For our model equations in Eq. (24), we do not have the support of a general underlying PDE system, however, we can design a multidimensional Riemann solver (using Eqs. (12), (13) and (14) of Balsara [8]) in the locally Lax-Friedrichs (LLF) approximation. This enables us to write our potentials at the vertices of Fig. 2 as a centered part as well as a multidimensionally dissipative part. We will then write discrete evolution equations and show that we get a centered update along with a parabolic contribution at first order. This makes it easier for us to understand that as the spatial order of accuracy of our curl-free reconstruction is improved, and as the accuracy of our time-update is improved, the dissipative parts will become progressively smaller. In other words, the same exercise that was presented in Sect. 4 of Balsara and Käppeli [17] for mimetic, globally divergence-free schemes is now replicated in the ensuing paragraphs for mimetic, globally curl-free schemes.

We still consider the case where the velocity components \(\left( {{\text{v}}^{x} ,{\text{v}}^{y} } \right)\) are constant but now they can have any sign. We write the potential at the vertex \(\left( {i - 1/2,j - 1/2} \right)\) as a centered term plus a diffusive term. We have

$$\begin{aligned} \phi_{i - 1/2,j - 1/2}^{n} =& \frac{1}{2}{\text{v}}^{x} \left( {J_{i,j - 1/2}^{x;n} + J_{i - 1,j - 1/2}^{x;n} } \right) - \frac{1}{2}\left| {{\text{v}}^{x} } \right|\left( {J_{i,j - 1/2}^{x;n} - J_{i - 1,j - 1/2}^{x;n} } \right) \\ &+ \frac{1}{2}{\text{v}}^{y} \left( {J_{i - 1/2,j}^{y;n} + J_{i - 1/2,j - 1}^{y;n} } \right) - \frac{1}{2}\left| {{\text{v}}^{y} } \right|\left( {J_{i - 1/2,j}^{y;n} - J_{i - 1/2,j - 1}^{y;n} } \right). \\ \end{aligned}$$
(31)

Analogous expressions can be written for \(\phi_{i + 1/2,j - 1/2}^{n}\) and \(\phi_{i - 1/2,j + 1/2}^{n}\) by appropriate shifting of the indices. Making transcriptions that are analogous to the ones in Eq. (29) we obtain

$$\left\{\begin{gathered} \frac{{J_{i,j - 1/2}^{x;n + 1} - J_{i,j - 1/2}^{x;n} }}{\Delta t} + \frac{{{\text{v}}^{x} }}{2\Delta x}\left( {J_{i + 1,j - 1/2}^{x;n} - J_{i - 1,j - 1/2}^{x;n} } \right) + \frac{{{\text{v}}^{y} }}{2\Delta y}\left( {J_{i,j + 1/2}^{x;n} - J_{i,j - 3/2}^{x;n} } \right) \hfill \\ \quad = \frac{{\left| {{\text{v}}^{x} } \right|}}{2\Delta x}\left( {J_{i + 1,j - 1/2}^{x;n} - 2J_{i,j - 1/2}^{x;n} + J_{i - 1,j - 1/2}^{x;n} } \right) + \frac{{\left| {{\text{v}}^{y} } \right|}}{2\Delta y}\left( {J_{i,j + 1/2}^{x;n} - 2J_{i,j - 1/2}^{x;n} + J_{i,j - 3/2}^{x;n} } \right), \hfill \\ \frac{{J_{i - 1/2,j}^{y;n + 1} - J_{i - 1/2,j}^{y;n} }}{\Delta t} + \frac{{{\text{v}}^{x} }}{2\Delta x}\left( {J_{i + 1/2,j}^{y;n} - J_{i - 3/2,j}^{y;n} } \right) + \frac{{{\text{v}}^{y} }}{2\Delta y}\left( {J_{i - 1/2,j + 1}^{y;n} - J_{i - 1/2,j - 1}^{y;n} } \right) \hfill \\ \quad = \frac{{\left| {{\text{v}}^{x} } \right|}}{2\Delta x}\left( {J_{i + 1/2,j}^{y;n} - 2J_{i - 1/2,j}^{y;n} + J_{i - 3/2,j}^{y;n} } \right) + \frac{{\left| {{\text{v}}^{y} } \right|}}{2\Delta y}\left( {J_{i - 1/2,j + 1}^{y;n} - 2J_{i - 1/2,j}^{y;n} + J_{i - 1/2,j - 1}^{y;n} } \right). \hfill \\ \end{gathered}\right.$$
(32)

The above equations clearly show us the centered terms and the dissipation terms in the first-order scheme. We see that the dissipation terms have the correct scaling to perfectly stabilize the scheme. The use of higher order curl-free reconstruction and higher order time stepping, in conjunction with the multidimensional Riemann solver, will reduce the dissipation. We now have our assurance that higher order, mimetic, globally curl-free schemes will be stable.

3 Curl-Preserving Reconstruction on a Three-Dimensional Cartesian Mesh

The prior exercise at reconstructing curl-free or curl-preserving vector fields in two dimensions has left us with two very valuable insights. We list them below.

  1. (i)

    We see that one should start at the lowest order and systematically build up to higher orders. This is because the polynomial terms at each order give us insight into which modes are needed at the next higher order.

  2. (ii)

    We also obtained the insight that some additional polynomial contributions will be needed to ensure curl-free vector fields at all locations within a zone. Because of the nature of the curl operator, and our need to only use the lowest order additional polynomials so as to retain a modicum of stability, we found that one component of the vector field usually takes on contributions that help cancel extra terms that arise in another component of the vector field.

Armed with these insights, we now extend our studies to three-dimensional Cartesian meshes.

Subsection 3.1 deals with the first-order reconstruction on 3D Cartesian meshes. Subsection 3.2 extends this to second order. Subsection 3.3 presents the third-order case. Subsection 3.4 shows that the curl-free reconstruction, when combined with a three-dimensional Riemann solver, produces a properly upwinded numerical scheme. Subsection 3.5 gives a step-by-step implementation strategy.

3.1 Curl-Preserving Reconstruction on a Three-Dimensional Cartesian Mesh at First Order

Figure 3 shows the collocation of vector components along the edges of the control volume. Within each of the two x-faces, the two y-faces and the two z-faces, the discrete circulation (evaluated over those faces) is exactly zero if we are dealing with a curl-free PDE. If the PDE is only curl-preserving, the discrete circulation is easily evaluated at each face, as we soon show. The mean value of the vector field’s parallel component and its linear variation are shown along each edge, in anticipation of a second-order accurate reconstruction scheme. The reconstruction problem consists of obtaining a polynomial that is globally curl-free/curl-preserving within this control volume. The discrete circulation within each of the six faces of the zone shown in Fig. 3 gives us the six conditions for the mean values. For simplicity, let us consider curl-free evolution in the next three equations. At the top and bottom x-faces we have

$$V_{y}^{3} + V_{z}^{4} - V_{y}^{4} - V_{z}^{2} = 0,\quad V_{y}^{1} + V_{z}^{3} - V_{y}^{2} - V_{z}^{1} = 0.$$
(33)
Fig. 3
figure 3

The collocation of vector components along the edges of the control volume. Within each of the two x-faces, the two y-faces and the two z-faces, the discrete circulation (evaluated over those faces) is either exactly zero or specified. The mean value and its linear variation are shown along each edge, in anticipation of a second-order accurate reconstruction scheme. The reconstruction problem consists of obtaining a polynomial that is globally curl-free/curl-preserving within this control volume

At the top and bottom y-faces we have

$$V_{z}^{3} + V_{x}^{4} - V_{z}^{4} - V_{x}^{2} = 0{ ,}\quad V_{z}^{1} + V_{x}^{3} - V_{z}^{2} - V_{x}^{1} = 0.$$
(34)

At the top and bottom z-faces we have

$$V_{x}^{3} + V_{y}^{4} - V_{x}^{4} - V_{y}^{2} = 0{ ,}\quad V_{x}^{1} + V_{y}^{3} - V_{x}^{2} - V_{y}^{1} = 0.$$
(35)

In general, the second and higher moments in Fig. 3 are only obtained with some level of approximation. So we cannot guarantee that an analogous set of equations hold for the slopes.

It is very important to make one further observation about a curl-free vector field. The six discrete curl conditions in Eqs. (33), (34) and (35) at the six faces of the mesh in Fig. 3 are not independent. The circulation condition at any one face can always be written in terms of the circulation conditions at the other five faces. Let us consider the z-faces and say that we know the condition \(V_{y}^{3} - V_{x}^{2} - V_{y}^{1} + V_{x}^{1} = 0\) at the bottom face. We wish to show that the condition at the top face can be obtained in terms of the condition at the bottom face and the use of Eqs. (33) and (34). To that end, realize that \(V_{y}^{3}\) appears only in the first discrete circulation condition in Eq. (33) and can be written as \(V_{y}^{3} = - V_{z}^{4} + V_{y}^{4} + V_{z}^{2}\). Similarly, \(V_{y}^{1}\) appears only in the second discrete circulation condition in Eq. (33) and can be written as \(- V_{y}^{1} = + V_{z}^{3} - V_{y}^{2} - V_{z}^{1}\). Likewise, \(V_{x}^{2}\) only appears in the first discrete circulation condition in Eq. (34) and can be written as \(- V_{x}^{2} = V_{z}^{4} - V_{x}^{4} - V_{z}^{3}\). Furthermore, \(V_{x}^{1}\) only appears in the second discrete circulation condition in Eq. (34) and can be written as \(V_{x}^{1} = - V_{z}^{2} + V_{x}^{3} + V_{z}^{1}\). Adding the above four equations immediately retrieves the first discrete circulation condition in Eq. (35). We have started with the second discrete circulation condition in Eq. (35) and shown that it immediately proves the first circulation condition in Eq. (35) if the four other circulation conditions in Eqs. (33) and (34) can be assumed true. Therefore, on a mesh with six faces, only five of them are truly, mutually independent.

Consider the following reconstruction on the unit cube spanning \(\left[ { - {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2},{1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}} \right]^{3}\). We write the three components of the first-order accurate curl-preserving vector field as

$$\begin{aligned} V^{x} \left( {x,y,z} \right) & = V_{x}^{1} \left( {y - \frac{1}{2}} \right)\left( {z - \frac{1}{2}} \right) + V_{x}^{2} \left( {y + \frac{1}{2}} \right)\left( {\frac{1}{2} - z} \right) \hfill \\ & \quad + V_{x}^{3} \left( {\frac{1}{2} - y} \right)\left( {z + \frac{1}{2}} \right) + V_{x}^{4} \left( {y + \frac{1}{2}} \right)\left( {z + \frac{1}{2}} \right), \hfill \\ \end{aligned}$$
(36)
$$\begin{aligned} V^{y} \left( {x,y,z} \right) & = V_{y}^{1} \left( {z - \frac{1}{2}} \right)\left( {x - \frac{1}{2}} \right) + V_{y}^{2} \left( {z + \frac{1}{2}} \right)\left( {\frac{1}{2} - x} \right) \hfill \\ & \quad+ V_{y}^{3} \left( {\frac{1}{2} - z} \right)\left( {x + \frac{1}{2}} \right) + V_{y}^{4} \left( {z + \frac{1}{2}} \right)\left( {x + \frac{1}{2}} \right) \hfill \\ \end{aligned},$$
(37)

and

$$\begin{aligned} V^{z} \left( {x,y,z} \right) & = V_{z}^{1} \left( {x - \frac{1}{2}} \right)\left( {y - \frac{1}{2}} \right) + V_{z}^{2} \left( {x + \frac{1}{2}} \right)\left( {\frac{1}{2} - y} \right) \hfill \\ \quad & + V_{z}^{3} \left( {\frac{1}{2} - x} \right)\left( {y + \frac{1}{2}} \right) + V_{z}^{4} \left( {x + \frac{1}{2}} \right)\left( {y + \frac{1}{2}} \right). \hfill \\ \end{aligned}$$
(38)

In the above three equations, the polynomial space is so chosen that the edge values of the vector field components are exactly retrieved at the edges of the zone shown in Fig. 3. As a result, the vector field will be globally constraint-preserving. We evaluate the curl of the above vector field in the next paragraph.

Evaluating \(\left( {\nabla \times {\mathbf{V}}} \right)_{x}\) we get

$$\begin{aligned} &\left( {\nabla \times {\mathbf{V}}} \right)_{x} = \frac{{\partial V^{z} }}{\partial y} - \frac{{\partial V^{y} }}{\partial z} = \frac{1}{2}\left( {V_{y}^{1} - V_{y}^{2} + V_{y}^{3} - V_{y}^{4} - V_{z}^{1} - V_{z}^{2} + V_{z}^{3} + V_{z}^{4} } \right) \\ & + \left( { - V_{y}^{1} + V_{y}^{2} + V_{y}^{3} - V_{y}^{4} + V_{z}^{1} - V_{z}^{2} - V_{z}^{3} + V_{z}^{4} } \right)x. \\ \end{aligned}$$
(39)

Set \(x = \pm {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}\) in the above equation to see that it retrieves the discrete circulation equations in Eq. (33) at the top and bottom x-faces, respectively. If the vector field is circulation-free, then this guarantees that \(\left( {\nabla \times {\mathbf{V}}} \right)_{x}\) is strictly zero in the above equation. Evaluating \(\left( {\nabla \times {\mathbf{V}}} \right)_{y}\) we get

$$\begin{aligned} &\left( {\nabla \times {\mathbf{V}}} \right)_{y} = \frac{{\partial V^{x} }}{\partial z} - \frac{{\partial V^{z} }}{\partial x} = \frac{1}{2}\left( {V_{z}^{1} - V_{z}^{2} + V_{z}^{3} - V_{z}^{4} - V_{x}^{1} - V_{x}^{2} + V_{x}^{3} + V_{x}^{4} } \right) \\ & + \left( { - V_{z}^{1} + V_{z}^{2} + V_{z}^{3} - V_{z}^{4} + V_{x}^{1} - V_{x}^{2} - V_{x}^{3} + V_{x}^{4} } \right)y. \\ \end{aligned}$$
(40)

Set \(y = \pm {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}\) in the above equation to see that it retrieves the discrete circulation equations in Eq. (34) at the top and bottom y-faces, respectively. If the vector field is circulation-free, then this guarantees that \(\left( {\nabla \times {\mathbf{V}}} \right)_{y}\) is strictly zero in the above equation. Evaluating \(\left( {\nabla \times {\mathbf{V}}} \right)_{z}\) we get

$$\begin{aligned} &\left( {\nabla \times {\mathbf{V}}} \right)_{z} = \frac{{\partial V^{y} }}{\partial x} - \frac{{\partial V^{x} }}{\partial y} = \frac{1}{2}\left( {V_{x}^{1} - V_{x}^{2} + V_{x}^{3} - V_{x}^{4} - V_{y}^{1} - V_{y}^{2} + V_{y}^{3} + V_{y}^{4} } \right) \\ & { + }\left( { - V_{x}^{1} + V_{x}^{2} + V_{x}^{3} - V_{x}^{4} + V_{y}^{1} - V_{y}^{2} - V_{y}^{3} + V_{y}^{4} } \right)z. \\ \end{aligned}$$
(41)

Set \(z = \pm {1 \mathord{\left/ {\vphantom {1 2}} \right. \kern-\nulldelimiterspace} 2}\) in the above equation to see that it retrieves the discrete circulation equations in Eq. (35) at the top and bottom z-faces, respectively. If the vector field is circulation-free, then this guarantees that \(\left( {\nabla \times {\mathbf{V}}} \right)_{z}\) is strictly zero in the above equation.

From Eqs. (39), (40) and (41), we also see that \(\nabla \cdot \left( {\nabla \times {\mathbf{V}}} \right) = \partial_{x} \left( {\nabla \times {\mathbf{V}}} \right)_{x} + \partial_{y} \left( {\nabla \times {\mathbf{V}}} \right)_{y} + \partial_{z} \left( {\nabla \times {\mathbf{V}}} \right)_{z} = 0\). In other words, the discrete divergence of the discrete curl is also exactly zero. This also tells us that a good zone-centered approximation of \(\left( {\nabla \times {\mathbf{V}}} \right)_{x}\) is given by the first term in Eq. (39). Likewise, a good zone-centered approximation of \(\left( {\nabla \times {\mathbf{V}}} \right)_{y}\) is given by the first term in Eq. (40). Similarly, a good zone-centered approximation of \(\left( {\nabla \times {\mathbf{V}}} \right)_{z}\) is given by the first term in Eq. (41). We will see in the next section that while these approximations are available, they are indeed sub-optimal because better approximations of the circulation are directly available in the faces of the mesh.

Now notice that Eqs. (36), (37) and (38) are only first-order accurate. This is because Eq. (36) lacks any linear variation in the x-direction; Eq. (37) lacks any linear variation in the y-direction and Eq. (38) lacks any linear variation in the z-direction. However, for the first-order accurate case, the equations are exactly curl-free or curl-preserving. Besides, the first-order curl-free reconstruction reflects the six discrete circulations evaluated over the six faces of the control volume using the edges of the same control volume. (This mirrors the known fact that at first order, the discrete divergence-preserving reconstruction reflects the one discrete divergence evaluated over the control volume using the faces of the same control volume.) Notice too that while there is only one divergence condition evaluated over a 3D control volume in a divergence-preserving scheme, there are six curl conditions evaluated over a 3D control volume in a curl-preserving scheme. This makes curl-free reconstruction more complicated than divergence-free reconstruction, especially in three dimensions.

Equations (39), (40) and (41) give us yet another insight if we compare them to Eq. (4). Notice that Eq. (4) is a single equation for the discrete circulation. However, because of the linear variation in the x-direction, Eq. (39) is an expression of the discrete circulation at the top and bottom x-faces. Similarly, because of the linear variation in the y-direction, Eq. (40) is an expression of the discrete circulation at the top and bottom y-faces. Likewise, because of the linear variation in the z-direction, Eq. (41) is an expression of the discrete circulation at the top and bottom z-faces. We, therefore, understand that three-dimensional curl-preserving reconstruction can be quite different from two-dimensional curl-preserving reconstruction. In three-dimensional curl-preserving reconstruction, even when we make a higher order reconstruction of the curl/circulation vector in the zone of interest, the two modes that are present in each of Eqs. (39), (40) and (41) must be retained.

3.2 Curl-Preserving Reconstruction on a Three-Dimensional Cartesian Mesh at Second Order

Notice that Eq. (36) already has a constant part and y, z and yz variation. To attain full second-order accuracy, we need to add a linear x-directional variation to \(V^{x} \left( {x,y,z} \right)\). This would be added to the x-edges of the zone shown in Fig. 3. The inclusion of such an x-variation will also trigger xy, xz and xyz terms in \(V^{x} \left( {x,y,z} \right)\). Similarly, notice that Eq. (37) already has a constant part and x, z and xz variation. To attain full second-order accuracy, we need to add a linear y-directional variation to \(V^{y} \left( {x,y,z} \right)\). This would be added to the y-edges of the zone shown in Fig. 3. The inclusion of such a y-variation will also trigger xy, yz and xyz terms in \(V^{y} \left( {x,y,z} \right)\). Likewise, notice that Eq. (38) already has a constant part and x, y and xy variation. To attain full second-order accuracy, we need to add a linear z-directional variation to \(V^{z} \left( {x,y,z} \right)\). This would be added to the z-edges of the zone shown in Fig. 3. The inclusion of such a z-variation will also trigger xz, yz and xyz terms in \(V^{z} \left( {x,y,z} \right)\). The inclusion of all these terms also causes the curl operator to acquire additional moments and to ensure curl-free reconstruction (or to make sure that the curl-preserving reconstruction has the appropriate moments) we need to add some complementing terms.

Notice that in the ensuing three equations, the polynomials are chosen with such factors that they do not affect the vector components, or their linear variation, in the edges. In other words, if the ensuing polynomial for \(V^{x} \left( {x,y,z} \right)\) is evaluated at any x-edge of Fig. 3, we indeed retrieve only the constant and linear variations in that x-edge, and nothing but that variation. Similarly, if \(V^{y} \left( {x,y,z} \right)\) is evaluated at any y-edge of Fig. 3, we indeed retrieve only the constant and linear variations in that y-edge, and nothing but that variation. Similarly, if \(V^{z} \left( {x,y,z} \right)\) is evaluated at any z-edge of Fig. 3, we indeed retrieve only the constant and linear variations in that z-edge, and nothing but that variation. We write the three components of the second-order accurate curl-preserving vector field as

$$\begin{aligned} V^{x} \left( {x,y,z} \right) &= \left[ {V_{x}^{1} + \left( {\Delta_{x} V_{x}^{1} } \right)x} \right]\left( {y - \frac{1}{2}} \right)\left( {z - \frac{1}{2}} \right) + \left[ {V_{x}^{2} + \left( {\Delta_{x} V_{x}^{2} } \right)x} \right]\left( {y + \frac{1}{2}} \right)\left( {\frac{1}{2} - z} \right) \\&\quad + \left[ {V_{x}^{3} + \left( {\Delta_{x} V_{x}^{3} } \right)x} \right]\left( {\frac{1}{2} - y} \right)\left( {z + \frac{1}{2}} \right) + \left[ {V_{x}^{4} + \left( {\Delta_{x} V_{x}^{4} } \right)x} \right]\left( {y + \frac{1}{2}} \right)\left( {z + \frac{1}{2}} \right) \\& \quad+ a_{yy} \left( {1 - 4y^{2} } \right) + a_{zz} \left( {1 - 4z^{2} } \right) + a_{yyz} \, z\left( {1 - 4y^{2} } \right) + a_{yzz} y\left( {1 - 4z^{2} } \right), \\ \end{aligned}$$
(42)
$$\begin{aligned} V^{y} \left( {x,y,z} \right) &= \left[ {V_{y}^{1} + \left( {\Delta_{y} V_{y}^{1} } \right)y} \right]\left( {z - \frac{1}{2}} \right)\left( {x - \frac{1}{2}} \right) + \left[ {V_{y}^{2} + \left( {\Delta_{y} V_{y}^{2} } \right)y} \right]\left( {z + \frac{1}{2}} \right)\left( {\frac{1}{2} - x} \right) \\ &\quad + \left[ {V_{y}^{3} + \left( {\Delta_{y} V_{y}^{3} } \right)y} \right]\left( {\frac{1}{2} - z} \right)\left( {x + \frac{1}{2}} \right) + \left[ {V_{y}^{4} + \left( {\Delta_{y} V_{y}^{4} } \right)y} \right]\left( {z + \frac{1}{2}} \right)\left( {x + \frac{1}{2}} \right) \\ &\quad + b_{xx} \, \left( {1 - 4x^{2} } \right) + b_{zz} \, \left( {1 - 4z^{2} } \right) + b_{xxz} \, z\left( {1 - 4x^{2} } \right) + b_{xzz} \, x\left( {1 - 4z^{2} } \right), \\ \end{aligned}$$
(43)

and

$$\begin{aligned} V^{z} \left( {x,y,z} \right) &= \left[ {V_{z}^{1} + \left( {\Delta_{z} V_{z}^{1} } \right)z} \right]\left( {x - \frac{1}{2}} \right)\left( {y - \frac{1}{2}} \right) + \left[ {V_{z}^{2} + \left( {\Delta_{z} V_{z}^{2} } \right)z} \right]\left( {x + \frac{1}{2}} \right)\left( {\frac{1}{2} - y} \right) \\ &\quad + \left[ {V_{z}^{3} + \left( {\Delta_{z} V_{z}^{3} } \right)z} \right]\left( {\frac{1}{2} - x} \right)\left( {y + \frac{1}{2}} \right) + \left[ {V_{z}^{4} + \left( {\Delta_{z} V_{z}^{4} } \right)z} \right]\left( {x + \frac{1}{2}} \right)\left( {y + \frac{1}{2}} \right) \\ &\quad + c_{xx} \, \left( {1 - 4x^{2} } \right) + c_{yy} \, \left( {1 - 4y^{2} } \right) + c_{xxy} \, y\left( {1 - 4x^{2} } \right) + c_{xyy} \, x\left( {1 - 4y^{2} } \right). \\ \end{aligned}$$
(44)

Now let us study the curl-preserving constraints that are put on the above vector field. The object of this study is to derive insights that help us to fix up the 12 coefficients—\(a_{yy} ,a_{zz} ,a_{yyz} ,a_{yzz}\), \(b_{xx} ,b_{zz} ,b_{xxz} ,b_{xzz}\), \(c_{xx} ,c_{yy} ,c_{xxy} ,c_{xyy}\)—in Eqs. (42), (43) and (44) above.

From Sect. 1, we have seen that every curl-preserving, edge-centered vector field has to be such that its curl matches a divergence-free vector field. This divergence-free vector field has components that are face-centered. Therefore, at the top and bottom x-faces of Fig. 3 we have the mean circulations given by \(\left( {V_{y}^{3} + V_{z}^{4} - V_{y}^{4} - V_{z}^{2} } \right)\) and \(\left( {V_{y}^{1} + V_{z}^{3} - V_{y}^{2} - V_{z}^{1} } \right)\), respectively. Using two-dimensional, second-order, FV WENO reconstruction that is restricted to the x-faces of the mesh, we can write the facial variation of the x-component of the circulation in the top and bottom x-faces as

$$\left\{\begin{gathered} R^{x + } \left( {y,z} \right) = \left( {V_{y}^{3} + V_{z}^{4} - V_{y}^{4} - V_{z}^{2} } \right) + R_{y}^{x + } y + R_{z}^{x + } z, \hfill \\ R^{x - } \left( {y,z} \right) = \left( {V_{y}^{1} + V_{z}^{3} - V_{y}^{2} - V_{z}^{1} } \right) + R_{y}^{x - } y + R_{z}^{x - } z. \hfill \\ \end{gathered} \right.$$
(45a)

Similarly, at the top and bottom y-faces of Fig. 3 we have the mean circulations given by \(\left( {V_{z}^{3} + V_{x}^{4} - V_{z}^{4} - V_{x}^{2} } \right)\) and \(\left( {V_{z}^{1} + V_{x}^{3} - V_{z}^{2} - V_{x}^{1} } \right)\), respectively. Using two-dimensional, second-order, FV WENO reconstruction that is restricted to the y-faces of the mesh, we can write the facial variation of the y-component of the circulation in the top and bottom y-faces as

$$\left\{\begin{gathered} R^{y + } \left( {x,z} \right) = \left( {V_{z}^{3} + V_{x}^{4} - V_{z}^{4} - V_{x}^{2} } \right) + R_{x}^{y + } x + R_{z}^{y + } z, \hfill \\ R^{y - } \left( {x,z} \right) = \left( {V_{z}^{1} + V_{x}^{3} - V_{z}^{2} - V_{x}^{1} } \right) + R_{x}^{y - } x + R_{z}^{y - } z. \hfill \\ \end{gathered}\right.$$
(45b)

Likewise, at the top and bottom z-faces of Fig. 3 we have the mean circulations given by \(\left( {V_{x}^{3} + V_{y}^{4} - V_{x}^{4} - V_{y}^{2} } \right)\) and \(\left( {V_{x}^{1} + V_{y}^{3} - V_{x}^{2} - V_{y}^{1} } \right)\), respectively. Using two-dimensional, second-order, FV WENO reconstruction that is restricted to the z-faces of the mesh, we can write the facial variation of the z-component of the circulation in the top and bottom z-faces as

$$\left\{\begin{gathered} R^{z + } \left( {x,y} \right) = \left( {V_{x}^{3} + V_{y}^{4} - V_{x}^{4} - V_{y}^{2} } \right) + R_{x}^{z + } x + R_{y}^{z + } y, \hfill \\ R^{z - } \left( {x,y} \right) = \left( {V_{x}^{1} + V_{y}^{3} - V_{x}^{2} - V_{y}^{1} } \right) + R_{x}^{z - } x + R_{y}^{z - } y. \hfill \\ \end{gathered} \right.$$
(45c)

Notice that WENO has given us the facial variations of the x-, y- and z-components of the circulations in the x-, y- and z-faces of the mesh. But we still do not have expressions for the circulation vector field over the volume of the zone that we are considering.

We can obtain expressions for the x-, y- and z-components of the circulation vector field using the divergence-free reconstruction strategy catalogued in Balsara et al. [24] (see Sect. 3 of that paper). The x-component of the volumetrically reconstructed circulation can be written as

$$R^{x} (x,y,z) = \alpha_{0} + \alpha_{x} x + \alpha_{y} y + \alpha_{z} z + \alpha_{xx} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \alpha_{xy} xy{ + }\alpha_{xz} xz,$$
(46a)

The y-component of the volumetrically reconstructed circulation can be written as

$$R^{y} \left( {x,y,z} \right) = \beta_{0} + \beta_{x} x + \beta_{y} y + \beta_{z} z + \beta_{xy} xy + \beta_{yy} \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \beta_{yz} yz.$$
(46b)

The z-component of the volumetrically reconstructed circulation can be written as

$$R^{z} \left( {x,y,z} \right) = \gamma_{0} + \gamma_{x} x + \gamma_{y} y + \gamma_{z} z + \gamma_{xz} xz + \gamma_{yz} yz + \gamma_{zz} \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right).$$
(46c)

Using the divergence-free constraint, Sect. 3 of Balsara et al. [24] gives us an explicit procedure for matching the 21 coefficients in Eqs. (46a), (46b) and (46c) to the coefficients in Eqs. (45a), (45b) and (45c). We do not repeat the procedure here because all the formulae have already been explicitly catalogued in the literature. Realize that we now have divergence-free expressions for the circulation vector field over the volume of the zone that we are considering.

With the divergence-free expressions for the circulation vector field in hand, we can now match the curl of Eqs. (42), (43) and (44) to Eqs. (46a), (46b) and (46c). Operationally, we write the three equations \(\partial_{y} V^{z} (x,y,z) - \partial_{z} V^{y} (x,y,z) = R^{x} (x,y,z)\), \(\partial_{z} V^{x} (x,y,z) - \partial_{x} V^{z} (x,y,z) = R^{y} (x,y,z)\) and \(\partial_{x} V^{y} (x,y,z) - \partial_{y} V^{x} (x,y,z) = R^{z} (x,y,z)\). We then match all nonzero moments across the three previous equations. This gives us a sparse linear system which we can solve for the 12 free coefficients in Eqs. (42), (43) and (44). With a little ingenuity, the coefficients in Eq. (42) are found to be

$$\left\{\begin{gathered} a_{yy} = \frac{1}{16}\left[ {R_{y}^{z - } + R_{y}^{z + } + \left( {\Delta_{y} V_{y}^{1} } \right) + \left( {\Delta_{y} V_{y}^{2} } \right) - \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right], \hfill \\ a_{zz} = \frac{1}{16}\left[ { - R_{z}^{y - } - R_{z}^{y + } + \left( {\Delta_{z} V_{z}^{1} } \right) - \left( {\Delta_{z} V_{z}^{2} } \right) + \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right], \hfill \\ a_{yyz} = \frac{1}{8}\left[ { - R_{y}^{z - } + R_{y}^{z + } - \, \left( {\Delta_{y} V_{y}^{1} } \right) + \, \left( {\Delta_{y} V_{y}^{2} } \right) + \, \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right], \hfill \\ a_{yzz} = \frac{1}{8}\left[ {R_{z}^{y - } - R_{z}^{y + } - \left( {\Delta_{z} V_{z}^{1} } \right) + \left( {\Delta_{z} V_{z}^{2} } \right) + \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right]. \hfill \\ \end{gathered}\right.$$
(47)

The coefficients in Eq. (43) are found to be

$$\left\{\begin{gathered} b_{xx} = \frac{1}{16}\left[ { - R_{x}^{z - } - R_{x}^{z + } + \left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right) + \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right], \hfill \\ b_{zz} = \frac{1}{16}\left[ {R_{z}^{x - } + R_{z}^{x + } + \left( {\Delta_{z} V_{z}^{1} } \right) + \left( {\Delta_{z} V_{z}^{2} } \right) - \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right], \hfill \\ b_{xxz} = \frac{1}{8}\left[ {R_{x}^{z - } - R_{x}^{z + } - \left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right) + \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right], \hfill \\ b_{xzz} = \frac{1}{8}\left[ { - R_{z}^{x - } + R_{z}^{x + } - \left( {\Delta_{z} V_{z}^{1} } \right) + \left( {\Delta_{z} V_{z}^{2} } \right) + \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right]. \hfill \\ \end{gathered}\right.$$
(48)

The coefficients in Eq. (44) are found to be

$$\left\{\begin{gathered} c_{xx} = \frac{1}{16}\left[ {R_{x}^{y - } + R_{x}^{y + } + \left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right) - \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right], \hfill \\ c_{yy} = \frac{1}{16}\left[ { - R_{y}^{x - } - R_{y}^{x + } + \left( {\Delta_{y} V_{y}^{1} } \right) - \left( {\Delta_{y} V_{y}^{2} } \right) + \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right], \hfill \\ c_{xxy} = \frac{1}{8}\left[ { - R_{x}^{y - } + R_{x}^{y + } - \left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right) + \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right], \hfill \\ c_{xyy} = \frac{1}{8}\left[ {R_{y}^{x - } - R_{y}^{x + } - \left( {\Delta_{y} V_{y}^{1} } \right) + \left( {\Delta_{y} V_{y}^{2} } \right) + \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right]. \hfill \\ \end{gathered}\right.$$
(49)

It is easy to see the finite difference-like structure in Eqs. (47), (48) and (49). We see that they truly represent higher derivatives that can be derived from the arrangement of gradients at the edges of the control volume in Fig. 3. This also tells us that the effect of these higher derivative terms in Eqs. (42), (43) and (44) is to slightly modify the higher moments in those equations so as to restore curl-free or curl-preserving behavior. It is also important to note that, in spite of this modification, the reconstructed vector field will indeed exactly match the mean values and the linear gradients of the vector field at the twelve edges of the zone shown in Fig. 3. As a result, the vector field will be globally constraint-preserving. Note too that the modifications will be slight owing to the fact that the modifying coefficients represent higher derivatives. Therefore, the reconstructed vector field in Eqs. (42), (43) and (44) is suitable for the construction of globally curl constraint-preserving schemes.

Because the second-order accurate vector field only has to be specified up to linear terms, its discrete curl only needs to be specified up to constant terms when we are considering a second-order FV scheme. But realize from an examination of Eq. (2) and how it arises from the last equation in Eq. (1) that a second-order DG scheme will also have an evolutionary equation for the curl of the original vector field; the latter equation also needs to be evolved with second-order accuracy. (In two-dimensions, this consideration was immaterial, but in three dimensions it is a meaningful consideration.) This completes our study of curl constraint-preserving reconstruction of vector fields at second order of accuracy.

3.3 Curl-Preserving Reconstruction on a Three-Dimensional Cartesian Mesh at Third Order

To understand the nuances that enter the reconstruction procedure at third order, it is helpful to divide our study into two stages in the following two paragraphs. In the first stage, it is helpful to study curl-free reconstruction of vector fields and the restrictions it places on the various terms in the reconstruction. Only in the second stage will we study curl constraint-preserving reconstruction of vector fields. This two-stage sub-division is also useful because several very useful PDE systems, like general relativity, only require a curl-free reconstruction of vector fields and do not need the computationally heavier details of a curl-preserving reconstruction of vector fields.

In this first stage of our study, let us begin by considering a curl-free vector field that is represented on a three-dimensional Cartesian mesh with third order of accuracy. The component \(V^{x} \left( {x,y,z} \right)\) in Eq. (42) has the following modes: it has a constant mode and it also has modes for \(x, \, y, \, z, \, xy, \, xz, \, yz, \, y^{2} , \, z^{2} , \, y^{2} z, \, yz^{2} , \, xyz\). Notice that the only mode that is missing in \(V^{x} \left( {x,y,z} \right)\) for obtaining full third-order accuracy is the \(x^{2}\) mode. This is good news, because it means that along the four x-edges of Fig. 3 we have to reconstruct/evolve the second moment of the x-component of the vector field along those edges. Let us label those four modes \(\left( {\Delta_{xx} V_{x}^{1} } \right)\), \(\left( {\Delta_{xx} V_{x}^{2} } \right)\), \(\left( {\Delta_{xx} V_{x}^{3} } \right)\) and \(\left( {\Delta_{xx} V_{x}^{4} } \right)\) with an obvious extension of the notation. (This extension of notation also applies to the y- and z-directions.) When an \(x^{2}\) mode is added along each of the four x-edges, it also triggers the additional presence of \(x^{2} y,x^{2} z,x^{2} yz\) variation in \(V^{x} \left( {x,y,z} \right)\). Similar considerations apply to the other directions so that we realize that along the four y-edges of Fig. 3 we have to provide four \(y^{2}\)-dependent modes to \(V^{y} \left( {x,y,z} \right)\); this also triggers the additional presence of \(y^{2} x,y^{2} z,y^{2} xz\) variation in \(V^{y} \left( {x,y,z} \right)\). Furthermore, along the four z-edges of Fig. 3 we have to provide four \(z^{2}\)-dependent modes to \(V^{z} \left( {x,y,z} \right)\); this also triggers the additional presence of \(z^{2} x,z^{2} y,z^{2} xy\) variation in \(V^{z} \left( {x,y,z} \right)\). To balance all the terms that have to be added in the other two components, we have to add \(y^{3} ,z^{3} ,y^{3} z,z^{3} y\) variations in \(V^{x} \left( {x,y,z} \right)\). Symmetry considerations help us to realize that we will have to add \(x^{3} ,z^{3} ,x^{3} z,z^{3} x\) variations in \(V^{y} \left( {x,y,z} \right)\). Similarly, we will have to add \(x^{3} ,y^{3} ,x^{3} y,y^{3} x\) variations in \(V^{z} \left( {x,y,z} \right)\). These additional terms are the minimum number of terms needed for ensuring the curl-free aspect of the vector field.

In this second stage of our study, we realize that the evolutionary equations for a curl-preserving vector field will have a corresponding evolutionary equation for its curl vector. For instance, see Eq. (2) which results from taking the curl of the last equation in Eq. (1). Even with all the modes that we have argued for in the previous paragraph, an evaluation of the curl of the original vector field will not have all the terms that are needed for matching all the modes that are specified in the evolutionary equation for the curl. This is especially true for a third-order accurate curl-preserving DG-like scheme. In the three equations that follow, such terms are denoted by a capital “A” in \(V^{x} \left( {x,y,z} \right)\); they are denoted by a capital “B” in \(V^{y} \left( {x,y,z} \right)\); and they are denoted by a capital “C” in \(V^{z} \left( {x,y,z} \right)\).

As in the second-order case, the polynomials are chosen with such factors that they do not affect the vectors in the edges. This was deemed essential for globally curl-preserving reconstruction. In other words, if the ensuing polynomial for \(V^{x} \left( {x,y,z} \right)\) is evaluated at any x-edge of Fig. 3, we indeed retrieve only the constant, linear and quadratic variations in that x-edge, and nothing but that variation. Similarly, if \(V^{y} \left( {x,y,z} \right)\) is evaluated at any y-edge of Fig. 3, we indeed retrieve only the constant, linear and quadratic variations in that y-edge, and nothing but that variation. Similarly, if \(V^{z} \left( {x,y,z} \right)\) is evaluated at any z-edge of Fig. 3, we indeed retrieve only the constant, linear and quadratic variation in that z-edge, and nothing but that variation. We write

$$\begin{aligned} V^{x} \left( {x,y,z} \right) &= \left[ {V_{x}^{1} + \left( {\Delta_{x} V_{x}^{1} } \right)x + \left( {\Delta_{xx} V_{x}^{1} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {y - \frac{1}{2}} \right)\left( {z - \frac{1}{2}} \right) \\ &\quad + \left[ {V_{x}^{2} + \left( {\Delta_{x} V_{x}^{2} } \right)x + \left( {\Delta_{xx} V_{x}^{2} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {y + \frac{1}{2}} \right)\left( {\frac{1}{2} - z} \right) \\ &\quad + \left[ {V_{x}^{3} + \left( {\Delta_{x} V_{x}^{3} } \right)x + \left( {\Delta_{xx} V_{x}^{3} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {\frac{1}{2} - y} \right)\left( {z + \frac{1}{2}} \right) \\ &\quad + \left[ {V_{x}^{4} + \left( {\Delta_{x} V_{x}^{4} } \right)x + \left( {\Delta_{xx} V_{x}^{4} } \right)\left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {y + \frac{1}{2}} \right)\left( {z + \frac{1}{2}} \right) \\& \quad + a_{yy} \left( {1 - 4y^{2} } \right) + a_{zz} \left( {1 - 4z^{2} } \right) + a_{yyz} \, z\left( {1 - 4y^{2} } \right) \\& \quad + a_{yzz} y\left( {1 - 4z^{2} } \right) + a_{yyy} y\left( {1 - 4y^{2} } \right) + a_{zzz} z\left( {1 - 4z^{2} } \right) \\ & \quad + a_{yyyz} yz\left( {1 - 4y^{2} } \right) + a_{yzzz} yz\left( {1 - 4z^{2} } \right) + A_{xyy} x\left( {1 - 4y^{2} } \right) \\ & \quad + A_{xzz} x\left( {1 - 4z^{2} } \right) + A_{xyyz} xz\left( {1 - 4y^{2} } \right) + A_{xyzz} xy\left( {1 - 4z^{2} } \right), \end{aligned}$$
(50)
$$\begin{aligned} V^{y} \left( {x,y,z} \right) &= \left[ {V_{y}^{1} + \left( {\Delta_{y} V_{y}^{1} } \right)y + \left( {\Delta_{yy} V_{y}^{1} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {z - \frac{1}{2}} \right)\left( {x - \frac{1}{2}} \right) \\ &\quad + \left[ {V_{y}^{2} + \left( {\Delta_{y} V_{y}^{2} } \right)y + \left( {\Delta_{yy} V_{y}^{2} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {z + \frac{1}{2}} \right)\left( {\frac{1}{2} - x} \right) \\ &\quad + \left[ {V_{y}^{3} + \left( {\Delta_{y} V_{y}^{3} } \right)y + \left( {\Delta_{yy} V_{y}^{3} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {\frac{1}{2} - z} \right)\left( {x + \frac{1}{2}} \right) \\ &\quad + \left[ {V_{y}^{4} + \left( {\Delta_{y} V_{y}^{4} } \right)y + \left( {\Delta_{yy} V_{y}^{4} } \right)\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {z + \frac{1}{2}} \right)\left( {x + \frac{1}{2}} \right) \\ &\quad + b_{xx} \, \left( {1 - 4x^{2} } \right) + b_{zz} \, \left( {1 - 4z^{2} } \right) + b_{xxz} \, z\left( {1 - 4x^{2} } \right)\\ & \quad + b_{xzz} \, x\left( {1 - 4z^{2} } \right) + b_{xxx} x\left( {1 - 4x^{2} } \right) + b_{zzz} z\left( {1 - 4z^{2} } \right) \\& \quad + b_{xxxz} xz\left( {1 - 4x^{2} } \right) + b_{xzzz} xz\left( {1 - 4z^{2} } \right) + B_{xxy} y\left( {1 - 4x^{2} } \right) \\ & \quad+ B_{yzz} y\left( {1 - 4z^{2} } \right) + B_{xxyz} yz\left( {1 - 4x^{2} } \right) + B_{xyzz} xy\left( {1 - 4z^{2} } \right), \end{aligned}$$
(51)

and

$$\begin{aligned} V^{z} \left( {x,y,z} \right) &= \left[ {V_{z}^{1} + \left( {\Delta_{z} V_{z}^{1} } \right)z + \left( {\Delta_{zz} V_{z}^{1} } \right)\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {x - \frac{1}{2}} \right)\left( {y - \frac{1}{2}} \right) \\ &\quad + \left[ {V_{z}^{2} + \left( {\Delta_{z} V_{z}^{2} } \right)z + \left( {\Delta_{zz} V_{z}^{2} } \right)\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {x + \frac{1}{2}} \right)\left( {\frac{1}{2} - y} \right) \\ &\quad + \left[ {V_{z}^{3} + \left( {\Delta_{z} V_{z}^{3} } \right)z + \left( {\Delta_{zz} V_{z}^{3} } \right)\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {\frac{1}{2} - x} \right)\left( {y + \frac{1}{2}} \right) \\& \quad + \left[ {V_{z}^{4} + \left( {\Delta_{z} V_{z}^{4} } \right)z + \left( {\Delta_{zz} V_{z}^{4} } \right)\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)} \right]\left( {x + \frac{1}{2}} \right)\left( {y + \frac{1}{2}} \right) \\ &\quad + c_{xx} \, \left( {1 - 4x^{2} } \right) + c_{yy} \, \left( {1 - 4y^{2} } \right) + c_{xxy} \, y\left( {1 - 4x^{2} } \right) \\ & \quad + c_{xyy} \, x\left( {1 - 4y^{2} } \right) + c_{xxx} x\left( {1 - 4x^{2} } \right) + c_{yyy} y\left( {1 - 4y^{2} } \right)\\ &\quad + c_{xxxy} xy\left( {1 - 4x^{2} } \right) + c_{xyyy} xy\left( {1 - 4y^{2} } \right) + C_{xxz} z\left( {1 - 4x^{2} } \right)\\ &\quad + C_{yyz} z\left( {1 - 4y^{2} } \right) + C_{xxyz} yz\left( {1 - 4x^{2} } \right) + C_{xyyz} xz\left( {1 - 4y^{2} } \right). \end{aligned}$$
(52)

Now let us study the curl-preserving constraints that are imposed on the above vector field. The object of this study is to derive insights that help us to fix up the 36 coefficients that are as yet unspecified in Eqs. (50), (51) and (52) above.

From Sect. 1 we have seen that every curl-preserving, edge-centered vector field has to be such that its curl matches a divergence-free vector field. This divergence-free vector field has components that are face-centered. Therefore, at the top and bottom x-faces of Fig. 3 we have the mean circulations given by \(\left( {V_{y}^{3} + V_{z}^{4} - V_{y}^{4} - V_{z}^{2} } \right)\) and \(\left( {V_{y}^{1} + V_{z}^{3} - V_{y}^{2} - V_{z}^{1} } \right)\), respectively. Using two-dimensional, third-order, FV WENO reconstruction that is restricted to the x-faces of the mesh, we can write the facial variation of the x-component of the circulation in the top and bottom x-faces as

$$\left\{\begin{gathered} R^{x + } \left( {y,z} \right) = \left( {V_{y}^{3} + V_{z}^{4} - V_{y}^{4} - V_{z}^{2} } \right) + R_{y}^{x + } y + R_{z}^{x + } z + R_{yy}^{x + } \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{zz}^{x + } \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{yz}^{x + } yz, \hfill \\ R^{x - } \left( {y,z} \right) = \left( {V_{y}^{1} + V_{z}^{3} - V_{y}^{2} - V_{z}^{1} } \right) + R_{y}^{x - } y + R_{z}^{x - } z + R_{yy}^{x - } \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{zz}^{x - } \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{yz}^{x - } yz. \hfill \\ \end{gathered} \right.$$
(53a)

Similarly, at the top and bottom y-faces of Fig. 3 we have the mean circulations given by \(\left( {V_{z}^{3} + V_{x}^{4} - V_{z}^{4} - V_{x}^{2} } \right)\) and \(\left( {V_{z}^{1} + V_{x}^{3} - V_{z}^{2} - V_{x}^{1} } \right)\), respectively. Using two-dimensional, third-order, FV WENO reconstruction that is restricted to the y-faces of the mesh, we can write the facial variation of the y-component of the circulation in the top and bottom y-faces as

$$\left\{\begin{gathered} R^{y + } \left( {x,z} \right) = \left( {V_{z}^{3} + V_{x}^{4} - V_{z}^{4} - V_{x}^{2} } \right) + R_{x}^{y + } x + R_{z}^{y + } z + R_{xx}^{y + } \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{zz}^{y + } \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{xz}^{y + } xz, \hfill \\ R^{y - } \left( {x,z} \right) = \left( {V_{z}^{1} + V_{x}^{3} - V_{z}^{2} - V_{x}^{1} } \right) + R_{x}^{y - } x + R_{z}^{y - } z + R_{xx}^{y - } \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{zz}^{y - } \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{xz}^{y - } xz. \hfill \\ \end{gathered} \right.$$
(53b)

Likewise, at the top and bottom z-faces of Fig. 3 we have the mean circulations given by \(\left( {V_{x}^{3} + V_{y}^{4} - V_{x}^{4} - V_{y}^{2} } \right)\) and \(\left( {V_{x}^{1} + V_{y}^{3} - V_{x}^{2} - V_{y}^{1} } \right)\), respectively. Using two-dimensional, third-order, FV WENO reconstruction that is restricted to the z-faces of the mesh, we can write the facial variation of the z-component of the circulation in the top and bottom z-faces as

$$\left\{\begin{gathered} R^{z + } \left( {x,y} \right) = \left( {V_{x}^{3} + V_{y}^{4} - V_{x}^{4} - V_{y}^{2} } \right) + R_{x}^{z + } x + R_{y}^{z + } y + R_{xx}^{z + } \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{yy}^{z + } \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{xy}^{z + } xy, \hfill \\ R^{z - } \left( {x,y} \right) = \left( {V_{x}^{1} + V_{y}^{3} - V_{x}^{2} - V_{y}^{1} } \right) + R_{x}^{z - } x + R_{y}^{z - } y + R_{xx}^{z - } \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{yy}^{z - } \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + R_{xy}^{z - } xy. \hfill \\ \end{gathered} \right.$$
(53c)

Notice that WENO has given us the facial variations of the x-, y- and z-components of the circulations in the x-, y- and z-faces of the mesh. But we still do not have expressions for the circulation vector field over the volume of the zone that we are considering.

We can obtain expressions for the x-, y- and z-components of the circulation vector field using the divergence-free reconstruction strategy catalogued in Balsara et al. [25] (see Sect. 3 of that paper). The x-component of the volumetrically reconstructed circulation can be written as

$$\begin{aligned} R^{x} (x,y,z) &= \alpha_{0} + \alpha_{x} x + \alpha_{y} y + \alpha_{z} z + \alpha_{xx} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \alpha_{yy} \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ & \quad + \alpha_{zz} \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \alpha_{xy} xy + \alpha_{yz} yz{ + }\alpha_{xz} xz{ + }\alpha_{xxx} \left( {x^{3} - {{3x} \mathord{\left/ {\vphantom {{3x} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right) \\ & \quad + \alpha_{xxy} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)y + \alpha_{xxz} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)z + \alpha_{xyy} x\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ & \quad + \alpha_{xzz} x\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \alpha_{xyz} xyz. \end{aligned}$$
(54a)

The y-component of the volumetrically reconstructed circulation can be written as

$$\begin{aligned} R^{y} \left( {x,y,z} \right) &= \beta_{0} + \beta_{x} x + \beta_{y} y + \beta_{z} z + \beta_{xx} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \beta_{yy} \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ & \quad + \beta_{zz} \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)+ \beta_{xy} xy + \beta_{yz} yz + \beta_{xz} xz{ + }\beta_{yyy} \left( {y^{3} - {{3y} \mathord{\left/ {\vphantom {{3y} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right) \\ &\quad + \beta_{xyy} x\left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \beta_{yyz} \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)z + \beta_{xxy} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)y \\ & \quad + \beta_{yzz} y\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \beta_{xyz} xyz. \end{aligned}$$
(54b)

The z-component of the volumetrically reconstructed circulation can be written as

$$\begin{aligned} R^{z} \left( {x,y,z} \right) &= \gamma_{0} + \gamma_{x} x + \gamma_{y} y + \gamma_{z} z + \gamma_{xx} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \gamma_{yy} \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) \\ & \quad + \gamma_{zz} \left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \gamma_{xy} xy + \gamma_{yz} yz + \gamma_{xz} xz{ + }\gamma_{zzz} \left( {z^{3} - {{3z} \mathord{\left/ {\vphantom {{3z} {20}}} \right. \kern-\nulldelimiterspace} {20}}} \right) \\ &\quad + \gamma_{xzz} x\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \gamma_{yzz} y\left( {z^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right) + \gamma_{xxz} \left( {x^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)z \\ & \quad + \gamma_{yyz} \left( {y^{2} - {1 \mathord{\left/ {\vphantom {1 {12}}} \right. \kern-\nulldelimiterspace} {12}}} \right)z + \gamma_{xyz} xyz. \end{aligned}$$
(54c)

Using the divergence-free constraint, Sect. 3 of Balsara et al. [25] gives us an explicit procedure for matching the 45 coefficients in Eqs. (54a), (54b) and (54c) to the coefficients in Eqs. (53a), (53b) and (53c). We do not repeat the procedure here because all the formulae have already been explicitly catalogued in the literature. Realize that we now have divergence-free expressions for the circulation vector field over the volume of the zone that we are considering.

With the divergence-free expressions for the circulation vector field in hand, we can now match the curl of Eqs. (50), (51) and (52) to Eqs. (54a), (54b) and (54c). This gives us a sparse linear system which we can solve for the 36 free coefficients in Eqs. (50), (51) and (52). With a little ingenuity, the coefficients in Eq. (50) are found to be

$$\left\{\begin{gathered} a_{yy} = \frac{1}{16}\left[ {R_{y}^{z - } + R_{y}^{z + } + \left( {\Delta_{y} V_{y}^{1} } \right) + \left( {\Delta_{y} V_{y}^{2} } \right) - \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right]{;} \hfill \\ a_{zz} = \frac{1}{16}\left[ { - R_{z}^{y - } - R_{z}^{y + } + \left( {\Delta_{z} V_{z}^{1} } \right) - \left( {\Delta_{z} V_{z}^{2} } \right) + \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right]{;} \hfill \\ a_{yyy} = \frac{1}{24}\left[ {R_{yy}^{z - } + R_{yy}^{z + } + \left( {\Delta_{yy} V_{y}^{1} } \right) + \left( {\Delta_{yy} V_{y}^{2} } \right) - \left( {\Delta_{yy} V_{y}^{3} } \right) - \left( {\Delta_{yy} V_{y}^{4} } \right)} \right]{;} \hfill \\ a_{zzz} = \frac{1}{24}\left[ { - R_{zz}^{y - } - R_{zz}^{y + } + \left( {\Delta_{zz} V_{z}^{1} } \right) - \left( {\Delta_{zz} V_{z}^{2} } \right) + \left( {\Delta_{zz} V_{z}^{3} } \right) - \left( {\Delta_{zz} V_{z}^{4} } \right)} \right]{;} \hfill \\ a_{yyz} = \frac{1}{8}\left[ { - R_{y}^{z - } + R_{y}^{z + } - \, \left( {\Delta_{y} V_{y}^{1} } \right) + \, \left( {\Delta_{y} V_{y}^{2} } \right) + \, \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right]{;} \hfill \\ a_{yzz} = \frac{1}{8}\left[ {R_{z}^{y - } - R_{z}^{y + } - \left( {\Delta_{z} V_{z}^{1} } \right) + \left( {\Delta_{z} V_{z}^{2} } \right) + \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right]{;} \hfill \\ A_{xzz} = - \frac{1}{32}\left( {R_{xz}^{y - } + R_{xz}^{y + } } \right){;}\quad A_{xyy} = \frac{1}{32}\left( {R_{xy}^{z - } + R_{xy}^{z + } } \right){;} \hfill \\ a_{yyyz} = \frac{1}{12}\left[ { - R_{yy}^{z - } + R_{yy}^{z + } - \left( {\Delta_{yy} V_{y}^{1} } \right) + \left( {\Delta_{yy} V_{y}^{2} } \right) + \left( {\Delta_{yy} V_{y}^{3} } \right) - \left( {\Delta_{yy} V_{y}^{4} } \right)} \right]{;} \hfill \\ a_{yzzz} = \frac{1}{12}\left[ {R_{zz}^{y - } - R_{zz}^{y + } - \left( {\Delta_{zz} V_{z}^{1} } \right) + \left( {\Delta_{zz} V_{z}^{2} } \right) + \left( {\Delta_{zz} V_{z}^{3} } \right) - \left( {\Delta_{zz} V_{z}^{4} } \right)} \right]{;} \hfill \\ A_{xyyz} = \frac{1}{16}\left( { - R_{xy}^{z - } + R_{xy}^{z + } } \right){ ; }\;A_{xyzz} = \frac{1}{16}\left( {R_{xz}^{y - } - R_{xz}^{y + } } \right). \hfill \\ \end{gathered} \right.$$
(55)

The coefficients in Eq. (51) are found to be

$$\left\{\begin{gathered} b_{xx} = \frac{1}{16}\left[ { - R_{x}^{z - } - R_{x}^{z + } + \left( {\Delta_{x} V_{x}^{1} } \right) - \left( {\Delta_{x} V_{x}^{2} } \right) + \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right]{;} \hfill \\ b_{zz} = \frac{1}{16}\left[ {R_{z}^{x - } + R_{z}^{x + } + \left( {\Delta_{z} V_{z}^{1} } \right) + \left( {\Delta_{z} V_{z}^{2} } \right) - \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right]{;} \hfill \\ b_{xxx} = \frac{1}{24}\left[ { - R_{xx}^{z - } - R_{xx}^{z + } + \left( {\Delta_{xx} V_{x}^{1} } \right) - \left( {\Delta_{xx} V_{x}^{2} } \right) + \left( {\Delta_{xx} V_{x}^{3} } \right) - \left( {\Delta_{xx} V_{x}^{4} } \right)} \right]{;} \hfill \\ b_{zzz} = \frac{1}{24}\left[ {R_{zz}^{x - } + R_{zz}^{x + } + \left( {\Delta_{zz} V_{z}^{1} } \right) + \left( {\Delta_{zz} V_{z}^{2} } \right) - \left( {\Delta_{zz} V_{z}^{3} } \right) - \left( {\Delta_{zz} V_{z}^{4} } \right)} \right]{;} \hfill \\ b_{xxz} = \frac{1}{8}\left[ {R_{x}^{z - } - R_{x}^{z + } - \left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right) + \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right]{;} \hfill \\ b_{xzz} = \frac{1}{8}\left[ { - R_{z}^{x - } + R_{z}^{x + } - \left( {\Delta_{z} V_{z}^{1} } \right) + \left( {\Delta_{z} V_{z}^{2} } \right) + \left( {\Delta_{z} V_{z}^{3} } \right) - \left( {\Delta_{z} V_{z}^{4} } \right)} \right]{;} \hfill \\ B_{yzz} = \frac{1}{32}\left( {R_{yz}^{x - } + R_{yz}^{x + } } \right){;}\quad B_{xxy} = - \frac{1}{32}\left( {R_{xy}^{z - } + R_{xy}^{z + } } \right){;} \hfill \\ b_{xxxz} = \frac{1}{12}\left[ {R_{xx}^{z - } - R_{xx}^{z + } - \left( {\Delta_{xx} V_{x}^{1} } \right) + \left( {\Delta_{xx} V_{x}^{2} } \right) + \left( {\Delta_{xx} V_{x}^{3} } \right) - \left( {\Delta_{xx} V_{x}^{4} } \right)} \right]{;} \hfill \\ b_{xzzz} = \frac{1}{12}\left[ { - R_{zz}^{x - } + R_{zz}^{x + } - \left( {\Delta_{zz} V_{z}^{1} } \right) + \left( {\Delta_{zz} V_{z}^{2} } \right) + \left( {\Delta_{zz} V_{z}^{3} } \right) - \left( {\Delta_{zz} V_{z}^{4} } \right)} \right]{;} \hfill \\ B_{xxyz} = \frac{1}{16}\left( {R_{xy}^{z - } - R_{xy}^{z + } } \right){;}\quad B_{xyzz} = \frac{1}{16}\left( { - R_{yz}^{x - } + R_{yz}^{x + } } \right). \hfill \\ \end{gathered} \right.$$
(56)

The coefficients in Eq. (52) are found to be

$$\left\{\begin{gathered} c_{xx} = \frac{1}{16}\left[ {R_{x}^{y - } + R_{x}^{y + } + \left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right) - \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right]{;} \hfill \\ c_{yy} = \frac{1}{16}\left[ { - R_{y}^{x - } - R_{y}^{x + } + \left( {\Delta_{y} V_{y}^{1} } \right) - \left( {\Delta_{y} V_{y}^{2} } \right) + \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right]{;} \hfill \\ c_{xxx} = \frac{1}{24}\left[ {R_{xx}^{y - } + R_{xx}^{y + } + \left( {\Delta_{xx} V_{x}^{1} } \right) + \left( {\Delta_{xx} V_{x}^{2} } \right) - \left( {\Delta_{xx} V_{x}^{3} } \right) - \left( {\Delta_{xx} V_{x}^{4} } \right)} \right]{;} \hfill \\ c_{zzz} = \frac{1}{24}\left[ { - R_{yy}^{x - } - R_{yy}^{x + } + \left( {\Delta_{yy} V_{y}^{1} } \right) - \left( {\Delta_{yy} V_{y}^{2} } \right) + \left( {\Delta_{yy} V_{y}^{3} } \right) - \left( {\Delta_{yy} V_{y}^{4} } \right)} \right]{;} \hfill \\ c_{xxy} = \frac{1}{8}\left[ { - R_{x}^{y - } + R_{x}^{y + } - \left( {\Delta_{x} V_{x}^{1} } \right) + \left( {\Delta_{x} V_{x}^{2} } \right) + \left( {\Delta_{x} V_{x}^{3} } \right) - \left( {\Delta_{x} V_{x}^{4} } \right)} \right]{;} \hfill \\ c_{xyy} = \frac{1}{8}\left[ {R_{y}^{x - } - R_{y}^{x + } - \left( {\Delta_{y} V_{y}^{1} } \right) + \left( {\Delta_{y} V_{y}^{2} } \right) + \left( {\Delta_{y} V_{y}^{3} } \right) - \left( {\Delta_{y} V_{y}^{4} } \right)} \right]{;} \hfill \\ C_{yyz} = - \frac{1}{32}\left( {R_{yz}^{x - } + R_{yz}^{x + } } \right){;}\quad C_{xxz} = \frac{1}{32}\left( {R_{xz}^{y - } + R_{xz}^{y + } } \right){;} \hfill \\ c_{xxxy} = \frac{1}{12}\left[ { - R_{xx}^{y - } + R_{xx}^{y + } - \left( {\Delta_{xx} V_{x}^{1} } \right) + \left( {\Delta_{xx} V_{x}^{2} } \right) + \left( {\Delta_{xx} V_{x}^{3} } \right) - \left( {\Delta_{xx} V_{x}^{4} } \right)} \right]{;} \hfill \\ c_{xyyy} = \frac{1}{12}\left[ {R_{yy}^{x - } - R_{yy}^{x + } - \left( {\Delta_{yy} V_{y}^{1} } \right) + \left( {\Delta_{yy} V_{y}^{2} } \right) + \left( {\Delta_{yy} V_{y}^{3} } \right) - \left( {\Delta_{yy} V_{y}^{4} } \right)} \right]{;} \hfill \\ C_{xxyz} = \frac{1}{16}\left( { - R_{xz}^{y - } + R_{xz}^{y + } } \right){;}\quad C_{xyyz} = \frac{1}{16}\left( {R_{yz}^{x - } - R_{yz}^{x + } } \right){. } \hfill \\ \end{gathered}\right.$$
(57)

As in the second-order case, it is easy to see the finite difference-like structure in Eqs. (55), (56) and (57). We see that they truly represent higher derivatives that can be derived from the arrangement of gradients (and higher moments) at the edges of the control volume in Fig. 3. Because the third-order accurate vector field only has to be specified up to quadratic terms, we might be able to get away with specifying its discrete curl only up to linear terms when we are considering a third-order WENO-like scheme. But realize from an examination of Eq. (2) and how it arises from the last equation in Eq. (1) that a third-order DG scheme will also have an evolutionary equation for the curl of the original vector field; and the latter equation also needs to be evolved with third-order accuracy. This completes our study of curl constraint-preserving reconstruction of vector fields at third order of accuracy.

3.4 Combining Curl-Free Reconstruction and the Three-Dimensional Riemann Solver to Obtain a Multidimensionally Upwinded, Globally Curl-Free Scheme

By now it is very evident that curl-free reconstruction of vector fields requires a collocation of vector components at the edges of the mesh. This is true in two and three dimensions. In Subsect 2.5, we showed that in two dimensions, the use of curl-free reconstruction, in conjunction with a two-dimensional Riemann solver that provides the two-dimensional upwinding, can indeed result in a properly upwinded, globally curl-free scheme. Since the curious reader might wonder whether there is an analogous extension to three dimensions, we provide such an extension here. To keep the discussion generally applicable to any possible time stepping strategy, we present it within the context of a semi-discrete formulation in time.

Let us focus on the model system that is the three dimensional extension of the one we studied in Eq. (24). We have

$$\left\{\begin{gathered} \frac{{\partial J^{x} }}{\partial t} + \frac{{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} + {\text{v}}^{z} J^{z} } \right)}}{\partial x} + {\text{v}}^{y} \left( {\frac{{\partial J^{x} }}{\partial y} - \frac{{\partial J^{y} }}{\partial x}} \right) + {\text{v}}^{z} \left( {\frac{{\partial J^{x} }}{\partial z} - \frac{{\partial J^{z} }}{\partial x}} \right) = 0{;} \hfill \\ \frac{{\partial J^{y} }}{\partial t} + \frac{{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} + {\text{v}}^{z} J^{z} } \right)}}{\partial y} + {\text{v}}^{x} \left( {\frac{{\partial J^{y} }}{\partial x} - \frac{{\partial J^{x} }}{\partial y}} \right) + {\text{v}}^{z} \left( {\frac{{\partial J^{y} }}{\partial z} - \frac{{\partial J^{z} }}{\partial y}} \right) = 0{;} \hfill \\ \frac{{\partial J^{z} }}{\partial t} + \frac{{\partial \left( {{\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} + {\text{v}}^{z} J^{z} } \right)}}{\partial z} + {\text{v}}^{x} \left( {\frac{{\partial J^{z} }}{\partial x} - \frac{{\partial J^{x} }}{\partial z}} \right) + {\text{v}}^{y} \left( {\frac{{\partial J^{z} }}{\partial y} - \frac{{\partial J^{y} }}{\partial z}} \right) = 0. \hfill \\ \end{gathered}\right.$$
(58)

Analogous to the demonstration in Subsect. 2.5, it is easy to show that if a curl-free vector field is initially provided, and if a curl-free reconstruction is used, then the semi-discrete form of the above equations ought to evolve the vector field in curl-free fashion. Additionally, we require that the potential be collocated at the vertices of the mesh. The above system is of great practical interest because it arises naturally as part of the first-order CCZ4 hyperbolic system that has to be solved for numerical general relativity; in fact, in the general relativistic context the equations do not have source terms. As in Subsect. 2.5, the emphasis in this subsection is on curl-free evolution of the three-dimensional vector field because the inclusion of source terms on the right-hand sides of the above equations can easily turn them into curl-preserving equations. For the simple case where the velocity vector \(\left( {{\text{v}}^{x} ,{\text{v}}^{y} ,{\text{v}}^{z} } \right)\) is a constant, Eq. (58) can be simplified to yield

$$\left\{\begin{gathered} \frac{{\partial J^{x} }}{\partial t} + {\text{v}}^{x} \frac{{\partial J^{x} }}{\partial x} + {\text{v}}^{y} \frac{{\partial J^{x} }}{\partial y} + {\text{v}}^{z} \frac{{\partial J^{x} }}{\partial z} = 0{ ;} \hfill \\ \frac{{\partial J^{y} }}{\partial t} + {\text{v}}^{x} \frac{{\partial J^{y} }}{\partial x} + {\text{v}}^{y} \frac{{\partial J^{y} }}{\partial y} + {\text{v}}^{z} \frac{{\partial J^{y} }}{\partial z} = 0{;} \hfill \\ \frac{{\partial J^{z} }}{\partial t} + {\text{v}}^{x} \frac{{\partial J^{z} }}{\partial x} + {\text{v}}^{y} \frac{{\partial J^{z} }}{\partial y} + {\text{v}}^{z} \frac{{\partial J^{z} }}{\partial z} = 0. \hfill \\ \end{gathered}\right.$$
(59)

While the above equations suggest that we are simply advecting a vector field in three dimensions, please note that Eq. (58) enjoins us to keep the vector field globally curl-free. This requires the edge-centered collocation of the components of the vector field. Equation (58) also tells us that the potentials “\({\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} + {\text{v}}^{z} J^{z}\)” should be uniquely specified at the vertices of the mesh in a multidimensionally upwinded fashion. To obtain stable advection, we need to show that the update methodology is also properly upwinded. We demonstrate all these facets within the context of a first-order semi-discrete scheme.

Figure 4 shows the collocation of curl-free vector components along the edges of a three-dimensional zone. The zone center is indexed by (i, j, k) and the edges are indexed suitably, consistent with the zone center’s indexing. As in the two-dimensional case, the potentials are defined by \(\phi \equiv {\text{v}}^{x} J^{x} + {\text{v}}^{y} J^{y} + {\text{v}}^{z} J^{z}\) and they are collocated at the vertices of the mesh. As long as the same potential at a vertex is used for the update of all the vector components in all the edges that meet at that vertex, the update will be globally curl-free. To keep the discussion simple, we take all the velocity components to be constant and positive. All the zones of the Cartesian mesh are also taken to be uniform with mesh sizes \(\Delta x\), \(\Delta y\) and \(\Delta z\) in the x-, y- and z-directions. The upwinded potentials at two of the vertices of the mesh are also shown. The potentials at other vertices can be obtained by suitable shifts in the indexing. The purpose of Fig. 4 is to make it easy for us to understand how a curl-free reconstruction that is based on edge-centered vector components, in conjunction with a three dimensional Riemann solver, can give us a stable, globally curl-free scheme.

Fig. 4
figure 4

The collocation of curl-free vector components along the edges of a three-dimensional zone. The zone center is indexed by (i, j, k) and the edges are indexed suitably, consistent with the zone center’s indexing. We take all the velocity components to be constant and positive. The upwinded potentials at two of the vertices of the mesh are also shown. The potentials at other vertices can be obtained by suitable shifts in the indexing. The purpose of this figure is to make it easy for us to understand how a curl-free reconstruction that is based on edge-centered vector components, in conjunction with a three dimensional Riemann solver, can give us a stable, globally curl-free scheme

In the ensuing discussion, we shall focus on only the first of the equations in Eqs. (58) and (59) because manipulations that are identical to the ones shown below can be made for the other two components of the vector field \({\mathbf{J}}\). Since the vector field is curl-free, the terms \({\text{v}}^{y} \left( {{{\partial J^{x} } \mathord{\left/ {\vphantom {{\partial J^{x} } {\partial y}}} \right. \kern-\nulldelimiterspace} {\partial y}} - {{\partial J^{y} } \mathord{\left/ {\vphantom {{\partial J^{y} } {\partial x}}} \right. \kern-\nulldelimiterspace} {\partial x}}} \right)\) and \({\text{v}}^{z} \left( {{{\partial J^{x} } \mathord{\left/ {\vphantom {{\partial J^{x} } {\partial z}}} \right. \kern-\nulldelimiterspace} {\partial z}} - {{\partial J^{z} } \mathord{\left/ {\vphantom {{\partial J^{z} } {\partial x}}} \right. \kern-\nulldelimiterspace} {\partial x}}} \right)\) do not contribute. As a result, the semi-discrete update for \(J_{i,j + 1/2,k + 1/2}^{x}\) in Fig. 4 becomes

$$\frac{{\partial J_{i,j + 1/2,k + 1/2}^{x} }}{\partial t} + \frac{{\phi_{i + 1/2,j + 1/2,k + 1/2} - \phi_{i - 1/2,j + 1/2,k + 1/2} }}{\Delta x} = 0.$$
(60)

Using the potentials \(\phi_{i + 1/2,j + 1/2,k + 1/2} = {\text{v}}^{x} J_{i,j + 1/2,k + 1/2}^{x} + {\text{v}}^{y} J_{i + 1/2,j,k + 1/2}^{y} + {\text{v}}^{z} J_{i + 1/2,j + 1/2,k}^{z}\) and \(\phi_{i - 1/2,j + 1/2,k + 1/2} = {\text{v}}^{x} J_{i - 1,j + 1/2,k + 1/2}^{x} + {\text{v}}^{y} J_{i - 1/2,j,k + 1/2}^{y} + {\text{v}}^{z} J_{i - 1/2,j + 1/2,k}^{z}\) from Fig. 4, we get

$$\begin{aligned} & \frac{{\partial J_{i,j + 1/2,k + 1/2}^{x} }}{\partial t} + \frac{{{\text{v}}^{x} }}{\Delta x}\left( {J_{i,j + 1/2,k + 1/2}^{x} - J_{i - 1,j + 1/2,k + 1/2}^{x} } \right) \\ &\quad + \frac{{{\text{v}}^{y} }}{\Delta x}\left( {J_{i + 1/2,j,k + 1/2}^{y} - J_{i - 1/2,j,k + 1/2}^{y} } \right) + \frac{{{\text{v}}^{z} }}{\Delta x}\left( {J_{i + 1/2,j + 1/2,k}^{z} - J_{i - 1/2,j + 1/2,k}^{z} } \right) = 0. \end{aligned}$$
(61)

It is easy to see that Eq. (61) scarcely resembles the first equation in Eq. (59). However, we now use the discrete circulations in faces \(\left( {i,j,k + 1/2} \right)\) and \(\left( {i,j + 1/2,k} \right)\) of Fig. 4 to make the transcription

$$\left\{ \begin{gathered} \frac{1}{\Delta x}\left( {J_{i + 1/2,j,k + 1/2}^{y} - J_{i - 1/2,j,k + 1/2}^{y} } \right) \to \frac{1}{\Delta y}\left( {J_{i,j + 1/2,k + 1/2}^{x} - J_{i,j - 1/2,k + 1/2}^{x} } \right), \hfill \\ \frac{1}{\Delta x}\left( {J_{i + 1/2,j + 1/2,k}^{z} - J_{i - 1/2,j + 1/2,k}^{z} } \right) \to \frac{1}{\Delta z}\left( {J_{i,j + 1/2,k + 1/2}^{x} - J_{i,j + 1/2,k - 1/2}^{x} } \right). \hfill \\ \end{gathered}\right.$$
(62)

Putting the transcription from Eq. (62) in Eq. (61) we get

$$\begin{aligned} & \frac{{\partial J_{i,j + 1/2,k + 1/2}^{x} }}{\partial t} + \frac{{{\text{v}}^{x} }}{\Delta x}\left( {J_{i,j + 1/2,k + 1/2}^{x} - J_{i - 1,j + 1/2,k + 1/2}^{x} } \right)\\ & + \frac{{{\text{v}}^{y} }}{\Delta y}\left( {J_{i,j + 1/2,k + 1/2}^{x} - J_{i,j - 1/2,k + 1/2}^{x} } \right) + \frac{{{\text{v}}^{z} }}{\Delta z}\left( {J_{i,j + 1/2,k + 1/2}^{x} - J_{i,j + 1/2,k - 1/2}^{x} } \right) = 0. \end{aligned}$$
(63)

The concordance between Eq. (63) and the first equation in Eq. (59) is now very obvious. We see that at first order our globally curl-free scheme is indeed properly upwinded. For the update in Eq. (63) we should use an effective control volume of size \(\Delta x \times \Delta y \times \Delta z\) that is centered on the center of the edge \(\left( {i,j + 1/2,k + 1/2} \right)\) shown in Fig. 4. As we use higher order curl-free or curl-preserving reconstructions and higher order time-stepping, we have the assurance that the numerical dissipation will be progressively reduced with increasing order but the scheme will remain stable. The demonstration might require a few steps, but the previous equation can also be written in a form that makes the centered and dissipation parts self-evident. We do not show the steps, but we show the final result. We have

$$\begin{gathered} \frac{{\partial J_{i,j + 1/2,k + 1/2}^{x} }}{\partial t} + \frac{{{\text{v}}^{x} }}{2\Delta x}\left( {J_{i + 1,j + 1/2,k + 1/2}^{x} - J_{i - 1,j + 1/2,k + 1/2}^{x} } \right) + \frac{{{\text{v}}^{y} }}{2\Delta y}\left( {J_{i,j + 3/2,k + 1/2}^{x} - J_{i,j - 1/2,k + 1/2}^{x} } \right) \hfill \\ + \frac{{{\text{v}}^{z} }}{2\Delta z}\left( {J_{i,j + 1/2,k + 3/2}^{x} - J_{i,j + 1/2,k - 1/2}^{x} } \right) = \frac{{\left| {{\text{v}}^{x} } \right|}}{2\Delta x}\left( {J_{i + 1,j + 1/2,k + 1/2}^{x} - 2J_{i,j + 1/2,k + 1/2}^{x} + J_{i - 1,j + 1/2,k + 1/2}^{x} } \right) \hfill \\ + \frac{{\left| {{\text{v}}^{y} } \right|}}{2\Delta y}\left( {J_{i,j + 3/2,k + 1/2}^{x} - 2J_{i,j + 1/2,k + 1/2}^{x} + J_{i,j - 1/2,k + 1/2}^{x} } \right) + \frac{{\left| {{\text{v}}^{z} } \right|}}{2\Delta z}\left( {J_{i,j + 1/2,k + 3/2}^{x} - 2J_{i,j + 1/2,k + 1/2}^{x} + J_{i,j + 1/2,k - 1/2}^{x} } \right). \hfill \\ \end{gathered}$$
(64)

We now see that a higher order extension can be made, as detailed in the steps given in the next subsection.

3.5 Stepwise Strategy for Implementing a Curl-Preserving Scheme

Thus we can identify the three essential steps for implementing a curl-preserving scheme.

  1. (i)

    We make a higher order curl-free reconstruction of the sort that is presented in Sects. 2 and 3 for any curl-constrained vector fields. Flow variables that have a zone-centered interpretation in a traditional higher order Godunov scheme can be reconstructed using well-known TVD or WENO methods. This gives us suitably high order spatial reconstruction in all instances.

  2. (ii)

    We continue to have the support of one-dimensional Riemann solver technology. However, on a two-dimensional mesh, we also use the two-dimensional Riemann solver to give us the potential \(\phi\) at the corners of the mesh, as shown in Fig. 2. On a three dimensional mesh, like the one shown in Fig. 4, we can use the three-dimensional Riemann solver from Balsara [9] to give us the potential \(\phi\) at the vertices of the mesh. We should also incorporate any suitable integration of source terms. For example, it is evident that the terms \({\mathbf{v}} \times \left( {\nabla \times {\mathbf{J}}} \right)\) and \(- \frac{\rho T}{\tau }{\mathbf{J}}\) in Eq. (1d) should be averaged at an edge from the zones that come together at the edge of interest. This step and the previous step give us a single stage of a Runge-Kutta scheme.

  3. (iii)

    A higher order SSP-RK time-stepping strategy can then be used to obtain higher order temporal accuracy. This combination of innovations will produce a stable, high order, multidimensionally upwinded, globally curl-free (or curl-preserving) scheme.

4 Von Neumann Stability Analysis of Curl Constraint-Preserving WENO-like Schemes

A von Neumann stability analysis for classical, volume-centered, DG schemes has been done (Liu et al. [43], Zhang and Shu [55]). In that analysis, the authors focused on the advection equation with a constant velocity. While the above authors showed a DG scheme, their methods can be adapted as well for WENO schemes. In a classical DG/WENO scheme, the primal variables are zone-centered and the objective is to satisfy a telescoping density-conservation constraint. (In other words, mass, momentum and energy densities are conserved in any subset of zones because of a telescoping application of mass, momentum and energy fluxes.) A similar von Neumann stability analysis for WENO-like and DG-like schemes for evolving the induction equation in MHD has also been carried out by Balsara and Käppeli [17]. The induction equation evolves a vector field in divergence-free fashion, and the analysis can be carried out with the simplification of a constant velocity in two dimensions. With that simplification, the induction equation also reduces to an advection of the two components of the vector field. In a divergence-preserving, face-centered, WENO-like or DG-like scheme for the induction equation, the primal variables are face-centered and the objective is to satisfy a telescoping divergence-preserving constraint. This choice of collocation also holds true for any divergence-constraint preserving PDE like Maxwell’s equations (Balsara and Käppeli [18]). It is now easy to see that for the curl-constraint preserving, edge-centered, WENO-like schemes for treating Eq. (24), we have the objective to satisfy a telescoping curl-preserving constraint. When we restrict Eq. (24) so as to have a constant velocity, Eq. (25) show us that the model PDE again reduces to the advection of two curl-free vector field components. (The reader should note that it is extremely difficult to analyze a full 2D scheme with non-constant velocity and that is the only reason for choosing a constant velocity. All the schemes that are analyzed in this paper can be applied to practical problems that have non-constant and time-evolving velocities, as shown later in Sects. 5 and 6) In all such stability analyses it is traditional to simplify the spatial and temporal parts of the problem using multi-stage Runge-Kutta time-stepping. Therefore, we will use the SSP-RK time-stepping schemes from (Shu and Osher [50, 51], Shu [49], Spiteri and Ruuth [52, 53], Gottlieb et al. [37]). The temporal order in our von Neumann stability analyses will always be matched to the spatial order of accuracy of the WENO-like scheme. (Because this paper is focused on WENO methods, we only develop the von Neumann stability analysis for curl-free WENO-like schemes for treating Eq. (24). In subsequent work, we would like to develop the same stability analysis for curl-free DG-like and PNPM-like schemes.)

We saw in Subsects. 2.5, 3.4 and 3.5 that the ingredients of a successful curl constraint-preserving scheme consist of: (i) a higher order curl-free reconstruction, (ii) a multidimensional Riemann solver, and (iii) a suitable high order time-stepping strategy. It is possible to use these three building blocks to design WENO-like, PNPM-like and DG-like schemes of higher order Godunov type that preserve the global constraints. The full description of such a plan requires indeed a separate paper and such a paper is under construction (Balsara and Käppeli [16]). The description of DG-like schemes is more intricate and is not done here; however, we have indeed described WENO-like schemes in detail in this paper. Therefore, it makes sense to present the von Neumann stability analysis of edge-centered curl-preserving schemes here.

From the edge-centered primal variables, the reconstruction strategy described in Sect. 2 (and its associated Fig. 1) is used to reconstruct the entire vector field. For a von Neumann stability analysis, smooth flow variables can be assumed, so that we always use results from the suitably high order central stencil from the WENO reconstruction. The application of the multidimensional Riemann solver, along with the use of a suitably higher order SSP-RK time-stepping scheme then completes the update strategy. In our von Neumann stability analysis we used a 2D Cartesian mesh with square zones. In such a von Neumann stability analysis, one posits a curl-free vector field in 2D with wave vector \(\left( {k_{x} ,k_{y} } \right)\) which has harmonic variation of the form \(\text{e}^{{i\left( {k_{x} x + k_{y} y} \right)}}\). For the model problem shown in Eq. (24) we then obtain the amplification factor as well as the phase of the entire globally curl-free WENO-like scheme. The exclusive use of the central stencil makes the entire scheme linear in the edge-centered variables with the result that a computer algebra system can be used to extract the entire amplification matrix.

Notice that each different choice of velocity components \(\left( {{\text{v}}_{x} ,{\text{v}}_{y} } \right)\) and each different choice of wave vector \(\left( {k_{x} ,k_{y} } \right)\) yields a different amplification factor and phase. What matters is that the amplification factor and phase depend on: (i) the angle between the velocity vector and the x-direction of the mesh, (ii) the relative angle between the wave vector and the velocity, and (iii) the ratio of the wavelength to the mesh size. We consider situations where the velocity vector makes angles of 0°, 15°, 30° and 45° relative to the x-direction of the mesh. This gives us a sufficiently interesting range of velocity directions. For each of those velocity directions, we allow the wave vector to sweep over all possible angles between the direction of the velocity and the direction of the wave vector. Higher order WENO schemes usually display good resolving capabilities, so we display the amplitude and phase information when the wavelength spans five zones, 10 zones and 15 zones. We do this for second, third and fourth order accurate WENO-like schemes.

We study the wave propagation characteristics for globally curl-free WENO-like schemes, which are second-order accurate in space. The time-stepping was SSP-RK2 so that the entire scheme is spatially and temporally second-order accurate. The von Neumann stability analysis shows us that this combination of spatial and temporal discretization yields a maximum CFL of 0.707 1.

For the plots shown in Fig. 5, the CFL was set at 90% of its maximum value. Figures 5a–d show one minus the absolute value of the amplification factor when the velocity vector makes angles of 0°, 15°, 30° and 45° relative to the x-direction of the mesh. Figures 5e–h show the phase error, again for the same angles. The 2D wave vector can make any angle relative to the 2D direction of velocity propagation, with the result that the amplitude and phase information are shown with respect to the angle made between the velocity direction and the direction of the wave vector. In each plot, the blue curve refers to waves that span five cells per wavelength; the green curve refers to waves that span 10 cells per wavelength; the red curve refers to waves that span 15 waves per wavelength. Notice that the cases where the velocity vector makes angles of 0° and 45° relative to the x-direction of the mesh indeed show symmetrical wave propagation characteristics, as expected. When the velocity vector makes angles of 15° and 30° relative to the x-direction of the mesh, there is no symmetry between the velocity direction, the mesh direction and the direction of the wave vector, with the result that we do not expect to see symmetrical plots, and indeed we do not. We do, however, observe that when the waves span 10 cells per wavelength and 15 cells per wavelength the wave propagation becomes very close to isotropic and quite free of dissipation. This is a good sign that even our second-order WENO-like scheme shows rather isotropic wave propagation with increasing wave length. In all instances, Fig. 5a–d show us that one minus the amplification factor is always positive or zero, indicating that the globally curl-free, second-order, WENO-like scheme is indeed stable.

Fig. 5
figure 5

The wave propagation characteristics for curl-preserving second-order WENO-like schemes. ad show one minus the absolute value of the amplification factor when the velocity vector makes angles of 0°, 15°, 30° and 45° relative to the x-direction of the 2D mesh. eh show the phase error, again for the same angles. The 2D wave vector can make any angle relative to the 2D direction of velocity propagation, therefore, the amplitude and phase information are shown w.r.t. the angle made between the velocity direction and the direction of the wave vector. In each plot, the blue curve refers to waves that span five cells per wavelength; the green curve refers to waves that span 10 cells per wavelength; the red curve refers to waves that span 15 waves per wavelength

We study the wave propagation characteristics for globally curl-free WENO-like schemes, which are spatially third-order accurate. The time stepping was SSP-RK3 so that the entire scheme is spatially and temporally third-order accurate. The von Neumann stability analysis shows us that this combination of spatial and temporal discretization yields a maximum CFL of 1.150 7. Note that a full application would involve zone-centered fluid-like variables which may need to be evolved with their own WENO reconstruction. That will impose its own CFL restriction, with the result that the smaller of the two CFL numbers has to be chosen.

For the plots shown in Fig. 6, the CFL was set at 90% of its maximum value. The first four panels in Fig. 6 show one minus the amplification factor, and the next four panels in Fig. 6 show the phase error. Comparing these results to their analogues in Fig. 5 we see that the third-order scheme shows a significant improvement in the phase accuracy compared to the second-order scheme. Owing to the built-in dissipation properties of SSP-RK3 time-stepping, the dissipation in Fig. 6 is only competitive with that in Fig. 5. However, the improving trend is restored once we go to fourth order. This shows the benefit of resorting to a higher order WENO-like scheme. We also see that the wave propagation in Fig. 6 is much more isotropic compared to Fig. 5.

Fig. 6
figure 6

The wave propagation characteristics for curl-preserving third-order WENO-like schemes. ad show one minus the absolute value of the amplification factor when the velocity vector makes angles of 0°, 15°, 30° and 45° relative to the x-direction of the 2D mesh. eh show the phase error, again for the same angles. The 2D wave vector can make any angle relative to the 2D direction of velocity propagation, therefore, the amplitude and phase information are shown w.r.t. the angle made between the velocity direction and the direction of the wave vector. In each plot, the blue curve refers to waves that span five cells per wavelength; the green curve refers to waves that span 10 cells per wavelength; the red curve refers to waves that span 15 waves per wavelength

We study the wave propagation characteristics for globally curl-free WENO-like schemes, which are spatially fourth order accurate. The time-stepping was SSP-RK(5,4) so that the entire scheme is spatially and temporally fourth order accurate. The von Neumann stability analysis shows us that this combination of spatial and temporal discretization yields a maximum CFL of 1.304 0. As before, when using this scheme along with a formulation that requires zone-centered fluid-like variables, one has to choose the smaller of the permissible CFL numbers.

For the plots shown in Fig. 7, the CFL was set at 90% of its maximum value. The first four panels in Fig. 7 show one minus the amplification factor, and the next four panels in Fig. 7 show the phase error. Comparing these results to analogous results in Figs. 5 or 6, we see that the transition to fourth order of accuracy has made a very substantial improvement in amplification factor as well as the phase accuracy. As before, comparing Fig. 7 to Figs. 5 or 6 shows that the fourth order WENO-like scheme has not just vastly improved accuracy but also significantly improved isotropy of wave propagation. Especially when there are ten or more zones per wavelength, Fig. 7 shows that the dissipation and dispersion errors of a fourth order WENO-like scheme are roughly one order of magnitude lower than that of a second or third-order scheme. This shows that in multidimensions, higher order WENO-like curl-free schemes provide not just vastly improved accuracy but also significantly improved isotropy of wave propagation.

Fig. 7
figure 7

The wave propagation characteristics for curl-preserving fourth order WENO-like schemes. ad show one minus the absolute value of the amplification factor when the velocity vector makes angles of 0°, 15°, 30° and 45° relative to the x-direction of the 2D mesh. eh show the phase error, again for the same angles. The 2D wave vector can make any angle relative to the 2D direction of velocity propagation, therefore, the amplitude and phase information are shown w.r.t. the angle made between the velocity direction and the direction of the wave vector. In each plot, the blue curve refers to waves that span five cells per wavelength; the green curve refers to waves that span 10 cells per wavelength; the red curve refers to waves that span 15 waves per wavelength

Taken together, the results of this section show that our curl constraint-preserving reconstruction, coupled with the multidimensional Riemann solver, provides a successful framework for the design of a very proficient class of mimetic WENO-like schemes for involution-constrained PDEs. Most importantly, the results presented point to a class of high order WENO -like mimetic schemes for involution-constrained PDEs that have superior amplitude preservation and phase accuracy even in multiple dimensions. Analysis of DG-like and PNPM-like schemes will, it is hoped, show even further possibilities for improvement.

5 Numerical Results for Two Model Problems and a Demonstration of Order Property

It behooves us to design and display a model problem where one can palpably witness the value of an exactly curl-preserving scheme. Moreover, since we have presented entire classes of such schemes with increasing order of accuracy, we would like to demonstrate the value of high order of accuracy. To that end, we present a test problem for a simple model PDE system, where the curl-free evolution of the vector field is of crucial importance.

Let us begin our discussion by considering the currently available alternatives. Of course, a GLM-style cleaning procedure has been developed in Dumbser et al. [31], but it requires increasing signal speed of the cleaning equations and also adds many more vector fields than are originally necessary. In Dumbser et al. [30] and Boscheri et al. [27], a new exactly curl-free semi-implicit scheme was presented using a vertex-based staggered mesh, but it is limited to second order of accuracy and requires frequent interpolation of the velocity field and of the curl-free vector field J to different staggered locations on the mesh, which makes it more difficult to extend to adaptive mesh refinement (AMR) techniques.

By contrast, the present formulation preserves the same control volume for the fluid variables as well as the curl-constraint preserving vector field, making it suitable for an eventual future extension to AMR. The availability of higher order curl-preserving formulations also allows us to show another interesting facet that has gone unappreciated in the literature. It turns out that in certain important limits, the curl-preserving vector field satisfies an energy principle. The quadratic energy of the vector field should remain unchanged in time. A good scheme should preserve this quadratic energy as much as possible. We show in this section that our increasingly accurate curl-preserving schemes preserve the quadratic energy with increasing precision.

In this section we illustrate the capabilities of our new high order accurate numerical method with the help of the toy system introduced in Dumbser et al. [30, 31]. The governing PDE system reads

$$\frac{\partial \rho }{{\partial t}} + \frac{\partial }{{\partial x_{i} }}\left( {\rho v_{i} } \right) = 0,$$
(65)
$$\frac{{\partial \rho v_{k} }}{\partial t} + \frac{\partial }{{\partial x_{i} }}\left( {\rho v_{i} v_{k} + \delta_{ik} p + \rho c_{0}^{2} J_{i} J_{k} } \right) = 0,$$
(66)
$$\frac{{\partial J_{k} }}{\partial t} + \frac{\partial }{{\partial x_{k} }}\left( {v_{m} J_{m} } \right) + v_{m} \left( {\frac{{\partial J_{k} }}{{\partial x_{m} }} - \frac{{\partial J_{m} }}{{\partial x_{k} }}} \right) = 0,$$
(67)

where the Einstein convention implying summation over repeated indexes is adopted. The system of Eqs. (65)–(67) describes the evolution of a scalar quantity ρ and two vector fields v and J, that in a fluid dynamic context could be interpreted as density, velocity and a kind of thermal impulse, respectively, while p represents the equivalent of a pressure, see Dumbser et al. [33]. As shown in Dumbser et al. [30] the system satisfies the extra energy conservation law

$$\frac{\partial \rho E}{{\partial t}} + \frac{\partial }{{\partial x_{k} }}\left( {v_{k} (\rho E + p) + v_{i} \rho c_{0}^{2} J_{i} J_{k} } \right) = 0.$$
(68)

In this paper the model system is closed by the simple linear relation

$$p = \gamma^{2} \rho ,$$
(69)

where γ is a given constant, as well as c0 in Eq. (66). The system (65)–(67) with (68) falls into the larger class of symmetric hyperbolic and thermodynamically compatible (SHTC) systems studied by Godunov and Romenski, see Godunov [35] and Romenski [46] and references therein.

Now, let us focus on the third PDE (67) and let \(\chi = v_{m} J_{m}\) be a scalar quantity. Applying the Schwarz theorem, which implies the symmetry of second derivatives, i.e.,

$$\frac{\partial }{{\partial x_{k} }}\frac{\partial }{{\partial x_{m} }}\chi - \frac{\partial }{{\partial x_{m} }}\frac{\partial }{{\partial x_{k} }}\chi = 0,$$

it follows that Eq. (67) maintains the linear involution constraint

$$C_{mk} = {\frac{{\partial J_{k} }}{{\partial x_{m} }} - \frac{{\partial J_{m} }}{{\partial x_{k} }}} = 0,$$
(70)

for all time if the field J was curl-free at the initial time.

It is therefore crucial to satisfy this constraint even at the discrete level, that is if \(C_{mk} = 0\) at the initial time it must remain zero for all time.

5.1 Model Problem: a Stationary Curl-Free Solution

To verify that the novel curl constraint-preserving scheme is able to fulfill over time the involution constraint in Eq. (70) we propose to solve the following test problem, which is an exact stationary and smooth solution of the model system (65)–(67). Let the computational domain be the square Ω = [−5;5]2 and let the generic radial coordinate r satisfy r2 = x2 + y2. The quantity J is defined as the gradient of a scalar potential ϕ, so that the initial condition is ensured to be curl-free. The potential is given by

$$\varphi (r) = A{\kern 1pt} \,{\text{erf}}\left( {\frac{{r - R_{0} }}{\sigma }} \right),$$
(71)

with the parameters A, R0 and σ. Then, the initial condition for the radial component \(J_{r} \left( r \right) \, = {\mathbf{J}}\left( r \right) \cdot {\mathbf{e}}_{r}\) reads

$$J_{r} (r) = \frac{\partial \varphi }{{\partial r}} = \frac{2A}{{\sqrt \uppi \sigma }}{\kern 1pt} \,\exp \left( { - \frac{{(r - R_{0} )^{2} }}{{\sigma^{2} }}} \right),$$
(72)

while the angular component is set to \(J_{\phi } \, = {\mathbf{J}} \cdot {\mathbf{e}}_{\phi }\). Here, \({\mathbf{e}}_{r}\) and \({\mathbf{e}}_{\phi }\) are the unit vectors in the radial and in the angular direction, respectively.

The initial condition in Eq. (72) guarantees that the involution constraint in Eq. (70) is satisfied at the initial time t = 0. We furthermore impose v = 0 at the initial time. From radial direction of Eq. (66) rewritten in polar coordinates it then follows that a stationary equilibrium is preserved if

$$\frac{\text{d}}{{\text{d}}r}\left( {p(r) + \rho (r)c_{0}^{2} J_{r}^{2} } \right) + \frac{1}{r}\rho (r)c_{0}^{2} J_{r}^{2} = 0,$$
(73)

Solving the above equilibrium condition for the radial derivative of ρ(ρ) and using Eq. (69) yields the following non-autonomous ODE for ρ(r):

$$\frac{\text{d}\rho }{{\text{d}r}} = - \frac{{\rho (r)J(r)c_{0}^{2} }}{{\gamma^{2} + J^{2} c_{0}^{2} }}\left( {2\frac{\text{d}J}{{\text{d}r}} + \frac{J(r)}{r}} \right),\quad \rho (0) = \rho_{0} .$$
(74)

The ODE (74) can be solved numerically to obtain the initial condition for the density profile ρ(r), which completes the setup of the initial condition of this test case. To this purpose we use a classical fourth order Runge-Kutta ODE solver with a very fine mesh spacing in radial direction so that the solution of the ODE can be considered as quasi-exact. The parameters in this model problem are set to A = 0.2, R0 = 2, σ = 0.5, ρ0 = 2, c0 = 2 and γ = 2.

5.2 Accuracy Analysis of the Numerical Scheme Using our Model Problem

In Fig. 8 we show the numerical results for the vector component Jx obtained on a mesh with 50 × 50 cells by running four different schemes: the semi-implicit second-order accurate staggered curl-free (SCF) scheme proposed in (Boscheri et al. [27]) and the second, third and fourth order accurate edge centered curl-preserving (ECCP) reconstruction methods developed in Sect. 2 of this work. The final time of the simulation is very large, i.e., tend = 100, to show the behavior and the stability of the scheme for very long time computations. The less dissipative behavior achieved by the high order reconstructions is clearly visible. We also notice that the SCF scheme is the most dissipative of the schemes shown in Fig. 8 because of the copious interpolation of the velocity field and the curl-free vector field J to different staggered locations on the mesh. We also mentioned that the quadratic energy of the vector field should, in principle, be preserved for this physical problem. All numerical schemes fall short of this ideal goal. In Fig. 9 we plot out the mesh-integrated quadratic energy, simply evaluated as \(J^{2} = J_{x}^{2} + J_{y}^{2}\) as a function of time. We see that the higher order schemes preserve the quadratic energy much better than the lower order schemes. This is because the numerical viscosity is significantly reduced when a high order reconstruction technique is adopted. Finally, we would also like to point out that without a curl-preserving scheme the solution is spoiled after short times and the equilibrium is violated very soon leading to catastrophically unphysical results. At late time, the result of not treating the curl-preserving aspect of the PDE is indeed a code blowup.

Fig. 8
figure 8

Four different simulations of our model test problem at 50 × 50 zone resolution. All figures show the y-component of the curl-free vector field after a very long simulation time; i.e., stopping time of 100. The color scheme is the same across all figures and the intervals between contours is also the same. a shows the result of the second-order curl free scheme from Boscheri et al. (2020) which frequently averages the solution to different locations of the mesh in the course of a timestep. bd show the results from our new scheme that uses curl-free reconstruction at second, third and fourth order, along with the multidimensional Riemann solver. The color saturation is seen to increase with increasing order and the solution is also less diffusive as one progresses from ad. Very different second-order schemes were used for a and b; we see that b shows appreciably lower diffusion

Fig. 9
figure 9

The evolution of the quadratic energy in the curl-free vector field as a function of time for the four schemes shown in Fig. 8. The model problem was run with 50 × 50 zone resolution to a time of 100. In principle, the quadratic energy of the constrained vector field integrated over the mesh should stay unchanged. The plot shows how much the quadratic energy decays with time for various schemes. Because of the frequent averaging over the course of a timestep, the second-order SCF(O2) scheme from Dumbser et al. [29] shows appreciable decay of energy. The second-order ECCP(O2) scheme designed here improves on the SCF(O2) scheme. The third-order ECCP(O3) scheme shows substantial improvement over the second-order schemes. The fourth order ECCP(O4) scheme provides the best preservation of quadratic energy, thus highlighting the value of well-designed higher order curl-preserving schemes for the evolution of curl-constrained vector fields

A numerical convergence study for this test problem is carried out by solving the model PDE system with the stationary initial condition discussed above until the final time of t = 10 using a sequence of successively refined meshes. The results for our novel curl-free WENO schemes presented in this paper are shown in Table 1 for nominal orders of accuracy from two to four. In Fig. 9 we finally show the temporal evolution of the curl error of second, third and fourth order curl-free WENO schemes on a uniform Cartesian mesh composed of 32 × 32 elements. It can be clearly seen that in all cases and for all times, the curl errors remain at the level of machine precision, as expected (Fig. 10).

Table 1 Numerical convergence study from second- to fourth-order accuracy for the novel high-order curl-preserving schemes that draw on the curl-preserving reconstruction from Sect. 2 presented in this paper. Errors for the variable Jx are shown
Fig. 10
figure 10

The time series of the maximum pointwise error of the curl of J for the stationary curl free test problem until t = 50. The computational domain is discretized with 32 × 32 uniform Cartesian cells. The results for second (black solid line), third (blue solid line) and fourth (red solid line) order curl-free WENO schemes are shown

Taken together, the results of this sub section show that our curl constraint-preserving reconstruction, coupled with the multidimensional Riemann solver, provides a successful framework for the design of mimetic FV schemes of increasing order of accuracy. Moreover, these schemes preserve the curl-constraint during very long time integrations. This constraint preservation also contributes significantly to the enhanced stability of the scheme. The model problem that we provide here is also quite novel and it enables us to precisely document that the methods presented here do indeed meet their designed order of accuracy. The utility of mimetic schemes with high accuracy is also emphasized by the fact that additional quadratic energy terms are also preserved with superlative precision as one goes to higher order. As a result, we have presented high order mimetic FV-type schemes which have long time stability and excellent preservation of quadratic energy.

5.3 Model Problem: Inhomogeneous Curl Involution

This test case aims at demonstrating the consistency of the time evolution related to the curl of the vector field J. Let us consider a non-homogeneous curl involution in the toy model by adding a source term in Eq. (67) so that the evolutionary equation for the x- and y-components can be explicitly written as

$$\left\{ \begin{gathered} \frac{{\partial J_{x} }}{\partial t} + \frac{\partial }{\partial x}\left( {{\text{v}}_{x} J_{x} + {\text{v}}_{y} J_{y} } \right) + {\text{v}}_{y} \left( {\frac{{\partial J_{x} }}{\partial y} - \frac{{\partial J_{y} }}{\partial x}} \right) = S_{x} , \hfill \\ \frac{{\partial J_{y} }}{\partial t} + \frac{\partial }{\partial y}\left( {{\text{v}}_{x} J_{x} + {\text{v}}_{y} J_{y} } \right) + {\text{v}}_{x} \left( {\frac{{\partial J_{y} }}{\partial x} - \frac{{\partial J_{x} }}{\partial y}} \right) = S_{y} \hfill \\ {\text{with}}\quad S_{x} = \sin x\sin y\quad {\text{and}}\quad S_{y} = \cos x\cos y. \hfill \\ \end{gathered}\right.$$
(75)

The initial conditions are given by setting the density field to unity and the components of the velocity field to be zero throughout the computational domain. The initial conditions for the thermal impulse vector field are given by

$$J_{x} = \sin x\sin y\quad {\text{and}}\quad J_{y} = \cos x\cos y.$$
(76)

As a result, the curl of the thermal impulse vector assumes a prescribed non-zero initial value given by \(R_{z} = - 2\sin x\cos y\). Similar to Eq. (2), an additional PDE is then defined which accounts for the time evolution of the Burger’s vector field \({\mathbf{R}} = \nabla \times {\mathbf{J}}\). In two-dimensions, the only non-zero component of \(R_{z}\) whose evolution equation can be explicitly written as

$$\frac{{\partial R_{z} }}{\partial t} + \frac{\partial }{\partial x}\left( {{\text{v}}_{x} R_{z} - S_{y} } \right) + \frac{\partial }{\partial y}\left( {{\text{v}}_{y} R_{z} + S_{x} } \right) = 0.$$
(77)

The constant \(c_{0}\) in Eq. (66) was set to zero. In Eq. (69), we set \(\gamma = 2\) so that we have a constitutive relation between the density and the pressure. Notice that in addition to having initial conditions given by \(R_{z} = - 2\sin x\cos y\), because the velocity field is zero, Eq. (77) becomes

$$\frac{{\partial R_{z} }}{\partial t} = - 2\sin x\cos y.$$
(78)

In other words, the Burger’s vector is analytically integrable! The goal of this test problem is to verify that Burger’s vector, which is the curl of the thermal impulse vector, is correctly evolved by the scheme.

The computational domain is taken to be a 100 × 100 Cartesian zone mesh in two-dimensions that spans \(\left[ { - \uppi ,3\uppi } \right] \times \left[ { - \uppi ,3\uppi } \right]\). Using the third-order curl-preserving scheme described in this paper (see Subsect. 3.5), we have run this test problem to the final time of unity. A CFL of 0.6 was used for the edge-centered curl-preserving scheme. (The reason it can sustain large CFL numbers is because it uses the multidimensional Riemann solver.) We also built a straightforward third order, zone-centered Godunov scheme that evolves Eqs. (65), (66), (75) and (77) so that we can compare and contrast the curl constraint-preserving scheme with one that does not preserve the constraints. Please recall that because of Eq. (78), the Burger’s vector is analytically integrable. Figure 11a shows the analytically evaluated Burger’s vector at a final time of unity. Figure 11b shows the Burger’s vector at the same final time when we used the third-order accurate edge-centered curl-preserving scheme. Figure 11c shows the Burger’s vector at the same final time when we used a plain-vanilla, zone-centered, third-order accurate Godunov scheme and directly finite differenced the zone-centered vector components \(J_{x}\) and \(J_{y}\) to obtain their curl. Although Figs. 11a–c look similar, please examine the quantitative values using the color bars. We see that the third-order accurate edge-centered curl-preserving scheme in Fig. 11b has closely tracked the analytical result in Fig. 11a. However, the numerical values in Fig. 11c are substantially different from those in Fig. 11a or b. This shows that a scheme that does not accurately account for the constraints in a curl-constrained PDE will indeed generate some noticeable errors even after a modest amount of time-integration.

Fig. 11
figure 11

ac The colorized plot of Rz as a function of position in the test problem at a time of 1. Because the problem lends itself to analytical treatment, a was obtained analytically. b was obtained numerically. Using the color bar, please note the close concordance in values between a and b, c was obtained from direct differentiation of a zone-centered higher order Godunov scheme that is not curl-preserving. Please use the color bars to compare the numerical values in c to those in a to see the significant differences. The color bar for each panel is different and scaled to the min and max of the data shown

We can also make the errors more quantitative when we realize that Eq. (77) is analytically integrable. We can, therefore, evaluate the error in the curl at each timestep as

$$\text{Error} = \iint\limits_{{\left( {x,y} \right) \in | - \uppi ,3\uppi } |^{2} } {\left| {\left( {\nabla \times {\mathbf{J}}} \right) - R_{z} } \right|\text{d}A}.$$
(79)

Figure 12 shows the error in the time-evolution of the Burger’s vector when we use the third-order accurate edge-centered curl-preserving scheme and when we use a plain-vanilla, zone-centered, third-order accurate Godunov scheme. If the methods in this paper are not used, the errors in the curl are bigger by 2–4 orders of magnitude. This is significant because the curl indeed drives the evolution of the thermal impulse in Eq. (1d).

Fig. 12
figure 12

The maximum error in Rz as a function of time for the edge-centered curl-preserving scheme versus a higher order Godunov scheme that does not preserve the curl. The latter shows errors that are 2–4 magnitudes higher

6 Results from Further Test Problems Involving the Full GPR System from Eq. (1)

While the previous section showed several useful results with the help of a toy problem, we now turn our attention to the full GPR system from Eq. (1). Our test consists of a blast problem that is allowed to evolve with various extents of thermal conduction. The thermal conduction is controlled by the relaxation time \(\tau\) in Eq. (1d) with the result that smaller values of \(\tau\) result in the thermal conduction having an increasingly larger effect. Because we have run all our simulations with a time-explicit formulation of the source terms, we have restricted ourselves to \(\tau = 100\), \(\tau = 10\), \(\tau = 1\) and \(\tau = 0.1\). As for the other coefficients that regulate the PDE system in Eq. (1), we have used \(\gamma = 1.4\), \(c_{h} = 1\) and \(c_{v} = 2.5\). Our objective is to carry out four simulations with the four different values of \(\tau\) using the third-order accurate, edge-centered, curl-preserving formulation with one-dimensional and multidimensional Riemann solvers that produces constrained evolution. We will then repeat the same four simulations with a plain-vanilla, third-order accurate, zone-centered higher order Godunov scheme, with one-dimensional Riemann solver technology, where nothing special is done to account for the constrained evolution of the thermal impulse vector field. We will then intercompare the two methods and bring to the forefront the simulations where the maximum differences have been found.

The blast problem with thermal conduction that we consider here is set up on a 200 × 200 zone mesh that spans \(\left( {x,y} \right) \in \left[ { - 1,1} \right]^{2}\). Continuative or periodic boundary conditions may be used, because the simulation is always stopped before the outgoing blast wave reaches the boundary. Let “r” be the radius, measured from the origin. The problem consists of initializing the primitive variables \(\left( {\rho ,{\text{v}}_{x} ,{\text{v}}_{y} ,P,j_{x} ,j_{y} } \right)\) so that the central circular region is at higher density and pressure compared to the ambient region, as follows:

$$\left( {\rho ,{\text{v}}_{x} ,{\text{v}}_{y} ,P,j_{x} ,j_{y} } \right) = \left\{ {\begin{array}{ll} {\left( {2,0,0,1,0,0} \right)} & {{\text{for}}\;r \leqslant 0.2}, \\ {\left( {0.5,0,0,0.5,0,0} \right)} & {{\text{for}}\;r > 0.2}. \\ \end{array} } \right.$$

The simulation is run to the time of 0.7, which is just before the outer shock encounters the boundary. The edge-centered, curl-preserving scheme was run with a CFL of 0.6, whereas the plain-vanilla Godunov scheme was run with a CFL of 0.45. Notice that the interior of this blast wave set-up is cooler than the exterior, even if it is at higher pressure.

Figures 13a–d show the density, temperature, x-velocity and x-component of the thermal impulse at a final time of 0.7 for a simulation with \(\tau = 1\) that was run with the third-order accurate, edge-centered, curl-preserving formulation with one-dimensional and multidimensional Riemann solvers. Most of our other simulations look similar to Fig. 13, indicating that when the relaxation time is relatively large, the fluxes are dominated by the fluid fluxes and thermal conduction does not play a dominant role. However, Fig. 14 shows the same variables as in Fig. 13, but with \(\tau = 0.1\). The simulation in Fig. 14 was run with the same algorithm as Fig. 13. Figure 15 shows another simulation with \(\tau = 0.1\), but this time it was run with a plain-vanilla, third-order accurate, zone-centered higher order Godunov scheme, with one-dimensional Riemann solver technology. All densities across Figs. 13, 14, 15 are shown with the same color table that spans \(\left[ {0.45,2} \right]\); this makes it easy to inter-compare results across the three figures. All temperatures (defined by \({P \mathord{\left/ {\vphantom {P \rho }} \right. \kern-\nulldelimiterspace} \rho }\)) across Figs. 13, 14, 15 are shown with the same color table that spans \(\left[ {0.5,1.05} \right]\). Likewise, the x-velocity across the three figures uses a color table that has a range of \(\left[ { - 0.18,0.18} \right]\). Similarly, the x-component of the thermal impulse uses a color table that has a range of \(\left[ { - 0.75,0.75} \right]\) across all three figures. The simulation rapidly sets up a system of outward-going circular shock and an inward-propagating reverse shock. This two-shock structure is well known even for a purely hydrodynamical blast wave problem. The final time corresponds to the time when the inward-propagating reverse shock converges on to the origin. Because the interior of the blast is cooler than the exterior, a heat flux is set up that carries heat from the exterior to the interior of the blast. In other words, while the blast expands outwards, the heat propagates inwards. As a result, one can observe that the sign of the outward-going x-velocity is opposite to the sign of the inward-going x-component of the thermal impulse vector field in these three figures. Decreasing values of \(\tau\) set up increasing amounts of heat flux. That heat flux has to compete with the other fluid dynamical fluxes in the problem with the result that we only expect small values of \(\tau\) to produce heat fluxes that produce an appreciable difference relative to the fluid dynamical fluxes. Because the color bars are the same across flow variables in these three figures, let us now compare Fig. 14 with Fig. 15. We see that the density, temperature and the x-component of the thermal impulse are quite different in Fig. 14 compared to Fig. 15. Specifically, the x-component of the thermal impulse, which tracks the heat flux, is indeed very different. This shows that measurable differences have revealed themselves which can only be attributed to the difference in algorithms. We see that the curl-preserving formulation does make a substantial difference in the physical result!

Fig. 13
figure 13

ad show density, temperature, x-velocity and x-component of the thermal impulse when t = 1 was used along with the ECCP scheme at third order. The solution is shown at a final time of 0.7. All densities across Figs. 13, 14, 15 are shown on the same scale to facilitate inter-comparison. Likewise, for all pressures across Figs. 13, 14, 15. Similarly for all x-velocities and all x-components of the thermal impulse across Figs. 13, 14, 15

Fig. 14
figure 14

ad Density, temperature, x-velocity and x-component of the thermal impulse when t = 0.1 was used along with the ECCP scheme at third order. The solution is shown at a final time of 0.7. All densities across Figs. 13, 14, 15 are shown on the same scale to facilitate inter-comparison. Likewise, for all pressures across Figs. 13, 14, 15. Similarly for all x-velocities and all x-components of the thermal impulse across Figs. 13, 14, 15

Fig. 15
figure 15

ad Density, temperature, x-velocity and x-component of the thermal impulse when t = 0.1 was used along with the plain-vanilla, zone-centered higher order Godunov scheme at third order. The solution is shown at a final time of 0.7. All densities across Figs. 13, 14, 15 are shown on the same scale to facilitate inter-comparison. Likewise, for all pressures across Figs. 13, 14, 15. Similarly for all x-velocities and all x-components of the thermal impulse across Figs. 13, 14, 15

Now let us try to understand why the choice of algorithm plays a very important role in differentiating the results. To make this apparent, we plot \(\left| {\nabla \times {\mathbf{J}}} \right|_{\max }\) as a function of simulation time for all our simulations of the blast problem in this Section. The results are shown in Fig. 16 in color-coded format. The solid curves show the results of the edge-centered curl-preserving algorithm. The dashed curves show the results of the plain-vanilla higher order Godunov algorithm. The dramatic difference is immediately evident. With diminishing values of \(\tau\), i.e., with increasingly stronger source terms in Eq. (1d), we see that the edge-centered curl-preserving algorithm produces a progressively larger maximum in the curl of the thermal impulse. In other words, the outputs are proportional to, and regulated by, the input value of \(\tau\)! This is exactly what we would desire in a well-designed numerical experiment! Please also note from Eq. (1d) that the \({\mathbf{v}} \times \left( {\nabla \times {\mathbf{J}}} \right)\) term drives the build-up of the thermal impulse vector as long as there is a non-zero source term on the right-hand side of that equation. The non-zero source term in Eq. (1d) allows the evolution to cease being curl-free and makes it curl-preserving. But it is the non-zero value of the \({\mathbf{v}} \times \left( {\nabla \times {\mathbf{J}}} \right)\) term in Eq. (1d) that drives the further build-up of circulation in the thermal impulse field. The edge-centered curl-preserving algorithm does a perfect job of modulating all aspects of that build-up so that decreasing values of \(\tau\) give us a well-modulated increase in the thermal flux! Now let us look at the dashed curves in Fig. 16. We see that regardless of the value of \(\tau\), the schemes that give rise to the dashed curves all produce the about same amount of circulation. Besides, that circulation builds up very quickly and in a completely unregulated fashion. This is because the circulation always tracks the discretization errors which can be quite large due to the zone-centered collocation that is inherent in a plain-vanilla higher order Godunov scheme. The need for a curl-preserving formulation has been driven home to us thanks to Fig. 16.

Fig. 16
figure 16

The evolution of the maximum absolute value of the curl of the thermal impulse vector as a function of time. The results are color-coded for the four different values of t used in the thermally conducting blast problem. Solid curves show the results from the edge-centered curl-preserving (ECCP) algorithm that uses the multidimensional Riemann solver. Dashed curves show the results from the plain-vanilla zone-centered higher order Godunov (HOG) schemes

7 Conclusions

Structure-preserving PDEs are becoming increasingly important for several applications in physics and engineering. Of particular interest in this paper are PDEs that preserve the curl of a vector field. Examples of such PDEs include hyperelasticity, compressible multiphase flows with and without surface tension, first-order reductions of the Einstein field equations as well as the novel first-order hyperbolic reformulation of the Schrödinger equation, to name a few examples. We have designed methods in this paper for increasingly high-order numerical treatment of such PDEs. The essential building blocks for such methods are shown to be a non-linearly hybridized curl constraint-preserving, high order accurate reconstruction strategy and the use of multidimensional Riemann solvers that are needed for properly upwinded constraint-preserving time update. These two building blocks are then coupled to the third building block which is the SSP-RK family of time-stepping strategies.

Sections 2 and 3 show how curl-preserving reconstruction is carried out in two and three dimensions. The starting point is a one-dimensional WENO reconstruction along the edges. However, careful attention has to be paid to the curl constraints to get the reconstructed vector field at all locations within the zone of interest. This is why we think of the reconstruction as a WENO-like reconstruction. Notice that we use non-linearly hybridized WENO schemes to build the higher order moments in the edges and only then carry out the volumetric reconstruction according to principles of curl-preservation. As a result, our curl-preserving reconstruction is non-linearly hybridized and, therefore, suitable for integration with higher order Godunov scheme philosophy. In those sections we also demonstrate that when the reconstruction is combined with multidimensional Riemann solvers, we get numerical schemes that are multidimensionally upwinded and multidimensionally stable.

We refer to the reconstruction described above as ECCP reconstruction. If all the higher moments in each edge are obtained with WENO reconstruction, then they can be referred to as WENO-ECCP schemes. If all the moments in each edge are evolved according to DG-like principles, then they can be referred to as DG-ECCP schemes. If only some of the lower moments in each edge are evolved, while higher moments are reconstructed, then they can be referred to as PNPM-ECCP schemes.

Section 4 presents some of the results of a von Neumann stability analysis of globally structure preserving WENO-like schemes in multiple space dimensions. The results in Sect. 4 point to a class of high order WENO-like mimetic schemes for involution-constrained PDEs that have superior amplitude preservation and phase accuracy even in multiple dimensions.

In Sect. 5, a test problem is constructed that produces steady-state analytically exact solutions. In that section, we show that the mimetic FV schemes that use our methods indeed preserve order of accuracy while simultaneously satisfying the curl-free constraint. In some limits, these schemes also preserve the quadratic energy on the mesh. The utility of our mimetic schemes with high accuracy is also illustrated by the fact that additional quadratic energy terms are preserved with superlative precision as one goes to higher order. As a result, we have presented high order accurate mimetic FV-type schemes which have long time stability and excellent preservation of quadratic energy. Furthermore, we have also presented examples that show that our curl constraint-preserving schemes retain fidelity with known analytical results, while zone-centered higher order Godunov schemes lose that fidelity. Section 6 shows further test problems involving thermal conductivity for the full GPR system in Eq. (1). We show that if the numerical scheme is not curl-preserving, eventually some measurable deficiencies will reveal themselves in the simulations.

In summary, in this paper we have shown that curl-constraint preserving WENO-like reconstruction provides a rich set of insights for mimetic scheme design when dealing with PDEs that have a curl-preserving involution.