As depicted in Chap. 2, the interface between the two sub-CEs (CD in Fig. 2.7), belongs to the SE of (j, n). The flux FC needs to be calculated through the Taylor expansion at point (j, n) toward the inverse time direction. As a result, the a scheme is reversible. This violates the second law of thermodynamics. Thus, the non-dissipative core suffers from the unphysical oscillations for practical applications. This chapter will present the improvements based on the non-dissipative core by introducing necessary numerical dissipation. The resulting dissipative CESE schemes can be categorized into the central CESE schemes and the upwind CESE schemes. It is convenient to begin with the most widely spread CESE scheme, the aα scheme.

3.1 a–α Scheme

Similar to the a scheme described in Chap. 2, the aα scheme is also a central scheme because of the fact that techniques to calculate upwind numerical fluxes are not used. Again, we consider the 1D scalar conservation law of the form

$$\frac{\partial u}{{\partial t}} + \frac{\partial f(u)}{{\partial x}} = 0$$
(3.1)

To solve Eq. (3.1) with the aα scheme, the discretization and the definitions of CE and SE keep the same as those for the a scheme, which can be found in Sect. 2.2. Basically, the solution algorithm follows that of the a scheme (see Sect. 2.3), except for Eq. (2.35) for the flux FC. It is worth noting that abandoning the calculation of FC does not affect the correctness of Eq. (2.33) for updating \(u_{j}^{n}\). Actually, Eq. (2.33) is purely a result of conservation in the entire conservation element \(({\text{CE}})_{j}^{n}\), irrespective of the flux FC. Therefore, the formula for updating the node value of the unknown u remains unchanged, which is written as

$$u_{j}^{n} = \frac{1}{2}(U_{L} + U_{R} ) + \frac{\Delta t}{{2\Delta x}}(F_{L} - F_{R} )$$
(3.2)

The calculation of UL, FL, UR, and FR are explicit and has been presented in Sect. 2.3, and then \(u_{j}^{n}\) can be evaluated using Eq. (3.2).

The remaining part of the aα scheme is to update the spatial derivative \((u_{x} )_{j}^{n}\) in a different way from the procedure of the a scheme. It is in this step where the necessary numerical dissipation is added into the aα scheme. First, two different estimations for \((u_{x} )_{j}^{n}\) can be obtained:

$$\left( {u_{x}^{ - } } \right)_{j}^{n} = \frac{{u_{j}^{n} - \left[ {u_{j - 1/2}^{n - 1/2} + \left( {\Delta t/2} \right)\left( {u_{t} } \right)_{j - 1/2}^{n - 1/2} } \right]}}{\Delta x/2},$$
(3.3)
$$\left( {u_{x}^{ + } } \right)_{j}^{n} = \frac{{\left[ {u_{j + 1/2}^{n - 1/2} + \left( {\Delta t/2} \right)\left( {u_{t} } \right)_{j + 1/2}^{n - 1/2} } \right] - u_{j}^{n} }}{\Delta x/2}$$
(3.4)

In these equations, the temporal derivatives ut at time level n−1/2 can be readily obtained using Eqs. (2.27) and (2.26). Next, \((u_{x} )_{j}^{n}\) is taken as a weighted average of \((u_{x}^{ - } )_{j}^{n}\) and \((u_{x}^{ + } )_{j}^{n}\):

$$(u_{x} )_{j}^{n} = W\left( {(u_{x}^{ - } )_{j}^{n} , \, (u_{x}^{ + } )_{j}^{n} , \, \alpha } \right)$$
(3.5)

where W is a weighted average function with an adjustable parameter α (α ≥ 0, the commonly used values are α = 0, 1 and 2), expressed as

$$W\left( {x^{ - } , \, x^{ + } , \, \alpha } \right) = \frac{{\left| {x^{ + } } \right|^{\alpha } x^{ - } + \left| {x^{ - } } \right|^{\alpha } x^{ + } }}{{\left| {x^{ + } } \right|^{\alpha } + \left| {x^{ - } } \right|^{\alpha } }},$$
(3.6)

The role of this weighted average function is similar to the slope limiter functions in upwind schemes, and it proves to be effective in suppressing the spurious oscillations near a discontinuity.

The above aα scheme has a clear and simple logic. However, the dissipation of the aα scheme increases dramatically as the Courant–Friedrichs–Lewy (CFL) number (the parameter defined by Eq. (2.40), ν = at/∆x) approaches zero. In practice, for small values of ν, the discontinuities in the solution can be smeared out. Therefore, the accuracy of the aα scheme is considered to be CFL-number sensitive.

To demonstrate this shortcoming, we consider f = au (a is a constant) in Eq. (3.1), and take α = 0 in Eq. (3.6). In this case, the weighted average function is reduced to a simple arithmetic averaging, and Eq. (3.5) can be written as

$$(u_{x} )_{j}^{n} = \frac{{\left[ {u_{j + 1/2}^{n - 1/2} + \left( {\Delta t/2} \right)\left( {u_{t} } \right)_{j + 1/2}^{n - 1/2} } \right] - \left[ {u_{j - 1/2}^{n - 1/2} + \left( {\Delta t/2} \right)\left( {u_{t} } \right)_{j - 1/2}^{n - 1/2} } \right]}}{\Delta x},$$
(3.7)

which means a central difference approximation at time level n is used to update the spatial derivative \((u_{x} )_{j}^{n}\). Recall that in Sect. 2.3 we have shown that a CESE scheme applied to the linear scalar convection equation can be written in a matrix form

$${\mathbf{q}}_{j}^{n} = {\mathbf{Q}}_{L} {\mathbf{q}}_{j - 1/2}^{n - 1/2} + {\mathbf{Q}}_{R} {\mathbf{q}}_{j + 1/2}^{n - 1/2}$$
(3.8)

for a half step or

$${\mathbf{q}}_{j}^{n} = ({\mathbf{Q}}_{L} )^{2} {\mathbf{q}}_{j - 1}^{n - 1} + ({\mathbf{Q}}_{L} {\mathbf{Q}}_{R} + {\mathbf{Q}}_{R} {\mathbf{Q}}_{L} ){\mathbf{q}}_{j}^{n - 1} + ({\mathbf{Q}}_{R} )^{2} {\mathbf{q}}_{j + 1}^{n - 1}$$
(3.9)

for a complete step. Here, the solution vector q is defined by Eq. (2.36) and the matrices QL and QR are functions of the CFL number ν = at/∆x. By combining Eqs. (3.2) and (3.7), the aα scheme with α = 0 can also be cast into the form of Eq. (3.9) with QL and QR as follows:

$${\mathbf{Q}}_{L} = \frac{1}{2}\left[ {\begin{array}{*{20}c} {1 + \nu } \\ { - 1/2} \\ \end{array} \, \begin{array}{*{20}c} {1 - v^{2} } \\ \nu \\ \end{array} } \right], \, {\mathbf{Q}}_{R} = \frac{1}{2}\left[ {\begin{array}{*{20}c} {1 - \nu } \\ {1/2} \\ \end{array} \, \begin{array}{*{20}c} { - 1 + v^{2} } \\ { - \nu } \\ \end{array} } \right]$$
(3.10)

Now, consider a limiting case of ∆t = 0 (but ∆x > 0), which leads to ν = 0. It can be shown that Eq. (3.9) leads to

$${\mathbf{q}}_{j}^{n} = \frac{1}{{4}}\left[ {\begin{array}{*{20}c} {1/2} \\ { - 1/2} \\ \end{array} \, \begin{array}{*{20}c} 1 \\ { - 1/2} \\ \end{array} } \right]{\mathbf{q}}_{j - 1}^{n - 1} + \frac{1}{4}\left[ {\begin{array}{*{20}c} 3 \\ 0 \\ \end{array} \, \begin{array}{*{20}c} 0 \\ 1 \\ \end{array} } \right]{\mathbf{q}}_{j}^{n - 1} + \frac{1}{{4}}\left[ {\begin{array}{*{20}c} {1/2} \\ {1/2} \\ \end{array} \, \begin{array}{*{20}c} { - 1} \\ { - 1/2} \\ \end{array} } \right]{\mathbf{q}}_{j + 1}^{n - 1}$$
(3.11)

However, a reasonable time-marching scheme should guarantee that \({\mathbf{q}}_{j}^{n} = {\mathbf{q}}_{j}^{n - 1}\) when ∆t vanishes, which indicates that the aα scheme suffers from numerical error when the CFL number is very small. Further numerical experiments show that, in practice, when the CFL number ν becomes smaller than 0.1, the excessive numerical dissipation of the aα scheme can be remarkable.

3.2 Courant–Number–Insensitive Scheme

To overcome the shortcoming of the aα scheme, a Courant–Number–Insensitive (CNI) scheme was constructed [1]. This improvement is based on two requirements: (1) the CNI scheme should reduce to the non-dissipative a scheme when the CFL number ν = 0 and (2) the CNI scheme should resemble the aα scheme when \(\left| \nu \right| = 1\). In this section, the construction of the CNI scheme will be present, and then the relationship between the CNI scheme, the a scheme, and the aα scheme will be shown.

First, the formula for updating the node value of the unknown u remains the same as Eq. (3.2), which has been used in a scheme and the aα scheme. By substituting formulas for UL, FL, UR, and FR (Eqs. (2.21)–(2.28)) into Eq. (3.2), the explicit time marching formula for \(u_{j}^{n}\) can be written as

$$u_{j}^{n} = \frac{1 + \nu }{2}u_{j - 1/2}^{n - 1/2} + \frac{{1 - \nu^{2} }}{8}\Delta x(u_{x} )_{j - 1/2}^{n - 1/2} + \frac{1 - \nu }{2}u_{j + 1/2}^{n - 1/2} + \frac{{\nu^{2} - 1}}{8}\Delta x(u_{x} )_{j + 1/2}^{n - 1/2}$$
(3.12)

Then, an algorithm for updating \((u_{x} )_{j}^{n}\) is devised. As shown in Fig. 3.1, the points (j − 1/2, n) and (j + 1/2, n) are denoted by V and V+, respectively. The point M is the midpoint between (j − 1/2, n) and (j, n), and M+ is the midpoint between (j + 1/2, n) and (j, n). We define two important points P and P+, which are on the line segments VM and V+M+, respectively. The distances between \(P_{ \pm }\) and node (j, n) are marked in Fig. 3.1. It is clear that \(P_{ \pm }\) coincides with \(V_{ \pm }\) when ν = 1, and they approach \(M_{ \pm }\) as ν → 0. The values of u(x, t) at \(P_{ \pm }\) are estimated by Taylor expansion at points \((j \pm 1/2,\,n - 1/2)\):

$$u(P_{ \pm } ) = u_{j \pm 1/2}^{n - 1/2} + \frac{\Delta t}{2}\left( {u_{t} } \right)_{j \pm 1/2}^{n - 1/2} \mp \frac{{\left( {1 - \left| \nu \right|} \right)\Delta x}}{4}\left( {u_{x} } \right)_{j \pm 1/2}^{n - 1/2}$$
(3.13)
Fig. 3.1
A schematic diagram. It has 2 rectangles with a common side. The node at the common side is (j, n). Points P subscript minus and M subscript minus are between j and (j minus half, n minus half) nodes. Points P subscript plus and M subscript plus are between j and (j plus half, n minus half) nodes. It marks the distances between the points and nodes.

Definition of points in CNI scheme

where \(u_{j \pm 1/2}^{n - 1/2}\) and \((u_{x} )_{j \pm 1/2}^{n - 1/2}\) are known, while \((u_{t} )_{j \pm 1/2}^{n - 1/2}\) can be obtained using Eqs. (2.27) and (2.26).

Next, u(P) and u(P+) are used to construct two different approximations of \((u_{x} )_{j}^{n}\)

$$\left( {\hat{u}_{x}^{ - } } \right)_{j}^{n} = \frac{{u_{j}^{n} - u(P_{ - } )}}{(1 + |\nu |)\Delta x/4}$$
(3.14)

and

$$\left( {\hat{u}_{x}^{ + } } \right)_{j}^{n} = \frac{{u(P_{ + } ) - u_{j}^{n} }}{(1 + |\nu |)\Delta x/4}$$
(3.15)

Finally, the CNI scheme use a weighted average of \((\hat{u}_{x}^{ - } )_{j}^{n}\) and \((\hat{u}_{x}^{ + } )_{j}^{n}\) as the updated value of \((u_{x} )_{j}^{n}\), in a way similar to the aα scheme. However, the weighted average function in the aα scheme, i.e. Eq. (3.6), is replaced with a more sophisticated one as

$$(u_{x} )_{j}^{n} = \frac{{\left[ {1 + f(|\nu |)(s_{ - } )_{j}^{n} } \right](\hat{u}_{x}^{ + } )_{j}^{n} + \left[ {1 + f(|\nu |)(s_{ + } )_{j}^{n} } \right](\hat{u}_{x}^{ - } )_{j}^{n} }}{{2 + f(|\nu |)\left[ {(s_{ - } )_{j}^{n} + (s_{ + } )_{j}^{n} } \right]}},$$
(3.16)

where

$$\left( {s_{ \pm } } \right)_{j}^{n} = \frac{{\left| {(\hat{u}_{x}^{ \pm } )_{j}^{n} } \right|}}{{\min \left( {\left| {(\hat{u}_{x}^{ - } )_{j}^{n} } \right|,\left| {(\hat{u}_{x}^{ + } )_{j}^{n} } \right|} \right)}} - 1$$
(3.17)

and

$$f(|\nu |) = {{0.5} \mathord{\left/ {\vphantom {{0.5} {|\nu |}}} \right. \kern-0pt} {|\nu |}}.$$
(3.18)

Hence, the overshoot phenomenon near discontinuities can be suppressed by the artificial dissipation, just like the aα scheme. Moreover, the dissipation brought by Eq. (3.16) can be adjusted dynamically according to the CFL number ν.

When ν = 0, we can show that the CNI scheme will reduce to the non-dissipative a scheme. Substituting ν = 0 (which also means ∆t = 0) into Eqs. (3.12) and (3.13) yields

$$u_{j}^{n} = \frac{1}{2}u_{j - 1/2}^{n - 1/2} + \frac{1}{8}\Delta x(u_{x} )_{j - 1/2}^{n - 1/2} + \frac{1}{2}u_{j + 1/2}^{n - 1/2} - \frac{1}{8}\Delta x(u_{x} )_{j + 1/2}^{n - 1/2}$$
(3.19)

and

$$u(P_{ \pm } ) = u_{j \pm 1/2}^{n - 1/2} \mp \frac{\Delta x}{4}(u_{x} )_{j \pm 1/2}^{n - 1/2}$$
(3.20)

From Eqs. (3.19) and (3.20), we can get

$$u_{j}^{n} = \frac{{u(P_{ - } ) + u(P_{ + } )}}{2}$$
(3.21)

By using ν = 0 and Eq. (3.21), it is readily shown that

$$\left( {\hat{u}_{x}^{ + } } \right)_{j}^{n} = \frac{{u(P_{ + } ) - u(P_{ - } )}}{\Delta x/2} = \left( {\hat{u}_{x}^{ - } } \right)_{j}^{n}$$
(3.22)

Thus, the weighted average of \((\hat{u}_{x}^{ - } )_{j}^{n}\) and \((\hat{u}_{x}^{ + } )_{j}^{n}\) is equal to [u(P+) − u(P)]/(∆x/2), which gives

$$(u_{x} )_{j}^{n} = \frac{1}{\Delta x/2}\left\{ {\left[ {u_{j + 1/2}^{n - 1/2} - \frac{\Delta x}{4}(u_{x} )_{j + 1/2}^{n - 1/2} } \right] - \left[ {u_{j - 1/2}^{n - 1/2} + \frac{\Delta x}{4}(u_{x} )_{j - 1/2}^{n - 1/2} } \right]} \right\}$$
(3.23)

Recall the expression of the a scheme (see Eqs. (2.38) and (2.39) in Chap. 2) and let ν = 0, we can reproduce Eqs. (3.19) and (3.23). Therefore, in the limiting case of ν = 0, the CNI scheme and the a scheme are identical.

As for the other limiting case |ν| = 1, Eqs. (3.13)–(3.15) lead to

$$\left( {\hat{u}_{x}^{ - } } \right)_{j}^{n} = \frac{{u_{j}^{n} - \left[ {u_{j - 1/2}^{n - 1/2} + (\Delta t/2)(u_{t} )_{j - 1/2}^{n - 1/2} } \right]}}{\Delta x/2},$$
(3.24)

and

$$\left( {\hat{u}_{x}^{ + } } \right)_{j}^{n} = \frac{{\left[ {u_{j + 1/2}^{n - 1/2} + (\Delta t/2)(u_{t} )_{j + 1/2}^{n - 1/2} } \right] - u_{j}^{n} }}{\Delta x/2}$$
(3.25)

There is no difference between \((\hat{u}_{x}^{ \pm } )_{j}^{n}\) in the CNI scheme and \((u_{x}^{ \pm } )_{j}^{n}\) in the aα scheme. Hence, the algorithms for updating \((u_{x} )_{j}^{n}\) in the CNI and the aα schemes are basically the same when |ν| = 1, except for the specific forms of the weighted average function.

Both the aα scheme in Sect. 3.1 and the CNI scheme in this section belong to the central CESE schemes. Extensions of these schemes to 2-D and 3-D cases for various systems of conservation equations (e.g. Euler equations for compressible gas dynamics) are straightforward and have been well implemented.

3.3 Upwind CESE Scheme

The aforementioned central CESE schemes are used to solve nonlinear hyperbolic systems of conservation laws. However, they did not explicitly resort to the knowledge of characteristics or eigenvalues of the systems. As an alternative approach, the characteristic-based upwind CESE scheme proposed by Shen et al. [2], elegantly combines the basic ideas of the CESE method and the upwind numerical flux technique in the Godunov-type FVM method. The upwind CESE scheme is naturally CFL-number-insensitive, which means it does not suffer from the drawback of the aα scheme presented in Sect. 3.1. For some challenging CFD problems such as the simulations of detonations and multiphase flows, the upwind CESE scheme captures discontinuities in flow fields with improved accuracy and robustness, especially for contact discontinuities (e.g., material interfaces).

3.3.1 Construction of Upwind CESE Scheme

For illustrative purposes, the 1D scalar conservation law (Eq. (3.1)) is considered again. Before introducing the upwind CESE algorithm, some elementary concepts about the space–time discretization need to be clarified. The same computational mesh and solution points as shown in Figs. 2.3 and 2.4 are adopted. The definition of CEs is also retained (see Fig. 2.5). Nevertheless, some modification is made to define the SEs, as sketched in Fig. 3.2. In comparison to the \(({\text{SE}})_{j}^{n}\) in Fig. 2.6, the newly designed \(({\text{SE}})_{j}^{n}\) no longer contains any part that allows for t < tn. Apparently, the SEs pave the whole space–time domain without overlap. It is assuemed that u(x, t) and f (x, t) are piecewise linear. For instance, inside \(({\text{SE}})_{j}^{n}\), they can be approximated by the first-order Taylor expansion at point (j, n). The boundaries of conservation element \(({\text{CE}})_{j}^{n}\) belong to three solution elements: DE and DF belong to \(({\text{SE}})_{j}^{n}\), AC and AE belong to \(({\text{SE}})_{j - 1/2}^{n - 1/2}\), and BC and BF belong to \(({\text{SE}})_{j + 1/2}^{n - 1/2}\). The interface between \(({\text{SE}})_{j - 1/2}^{n - 1/2}\) and \(({\text{SE}})_{j + 1/2}^{n - 1/2}\), i.e. line segment CD, splits the conservation element \(({\text{CE}})_{j}^{n}\) into two sub-CEs: \(({\text{CE}}^{ - } )_{j}^{n}\) and \(({\text{CE}}^{ + } )_{j}^{n}\).

Fig. 3.2
2 schematic diagrams. Diagram for C E has 2 rectangles E D C A and D F B C. Mesh nodes are at D, A, and B. Diagram for S E has 3 rectangles at 3 nodes D, A, and B. D is at (j, n), A at (j minus half, n minus half), and B at (j plus half, n minus half). Each rectangle mentions its respective C E in first diagram and S E in second diagram.

Definitions of CE and SE for upwind CESE schemes

The construction of the upwind CESE scheme closely follows the framework of the non-dissipative core scheme (i.e., the a scheme in Sect. 2.3). Indeed, Eqs. (2.16)–(2.34) still hold for the upwind CESE scheme, and they can be derived by the same procedures as presented in Sect. 2.3. Therefore, just like the a scheme, the aα scheme, and the CNI scheme, the formula to update \(u_{j}^{n}\) in the upwind CESE scheme remains the same as Eq. (3.2). However, for the purpose of updating \((u_{x} )_{j}^{n}\), the Eq. (2.34) will be utilized, which is the direct result of the space–time integral form of conservation law. For convenience, here we recall this equation:

$$\frac{\Delta x}{4}(u_{x} )_{j}^{n} = \frac{1}{2}(U_{R} - U_{L} ) + \frac{\Delta t}{{2\Delta x}}(2F_{C} - F_{L} - F_{R} )$$
(3.26)

Note that this equation is actually discarded in the aα and the CNI schemes, but both the a scheme and the upwind CESE scheme make full use of it. Furthermore, the key difference between the a scheme and the upwind CESE scheme lies in the treatment of FC in Eq. (3.26), which denotes the average flux through the interface CD between \(({\text{CE}}^{ - } )_{j}^{n}\) and \(({\text{CE}}^{ + } )_{j}^{n}\) (see Fig. 3.2).

As can be inferred from the new definition of solution elements in Fig. 3.2, the operation used in the a scheme to link FC with \((u_{x} )_{j}^{n}\) is forbidden in the upwind CESE scheme. Instead, we intend to obtain FC from the known data at time level n − 1/2, and then insert FC into Eq. (3.26) to get \((u_{x} )_{j}^{n}\). Toward this end, a local Riemann problem can be built at the midpoint of CD (denoted by (j, n − 1/4)), because CD is the interface between \(({\text{SE}})_{j - 1/2}^{n - 1/2}\) and \(({\text{SE}})_{j + 1/2}^{n - 1/2}\). To be specific, by Taylor expansion in \(({\text{SE}})_{j - 1/2}^{n - 1/2}\), the left state at point (j, n − 1/4) is evaluated as

$$\left( {u_{L} } \right)_{j}^{n - 1/4} = U_{L} + \frac{\Delta x}{4}(u_{x} )_{j - 1/2}^{n - 1/2} + \frac{\Delta t}{4}(u_{t} )_{j - 1/2}^{n - 1/2}$$
(3.27)

Meanwhile, Taylor expansion in \(({\text{SE}})_{j + 1/2}^{n - 1/2}\) provides the right state at point (j, n − 1/4):

$$\left( {u_{R} } \right)_{j}^{n - 1/4} = U_{R} - \frac{\Delta x}{4}(u_{x} )_{j + 1/2}^{n - 1/2} + \frac{\Delta t}{4}(u_{t} )_{j + 1/2}^{n - 1/2}$$
(3.28)

Recall that UL and UR are given by Eqs. (2.21) and (2.23). According to the definition of solution elements, the values of \((u_{L} )_{j}^{n - 1/4}\) and \((u_{R} )_{j}^{n - 1/4}\) are not necessarily equal to each other, and in general \((u_{L} )_{j}^{n - 1/4}\) and \((u_{R} )_{j}^{n - 1/4}\) form the discontinuous initial data on the left and right sides of the “diaphragm” CD.

Next, the average flux FC through CD can be evaluated based on the local Riemann problem with initial data (3.27) and (3.28) as

$$F_{C} = \hat{F}\left( {(u_{L} )_{j}^{n - 1/4} ,(u_{R} )_{j}^{n - 1/4} } \right)$$
(3.29)

where \(\hat{F}\) stands for any upwind numerical flux solver, or loosely referred to as Riemann solver. Consequently, the special derivative \((u_{x} )_{j}^{n}\) can be updated explicitly by Eq. (3.26). It is worth noting that, in the upwind CESE scheme, the time marching formula Eq. (3.2) for \(u_{j}^{n}\) has no concern with the upwind procedure above, since flux FC never appears in Eq. (3.2).

In case of strong discontinuities, using proper limiters for the derivatives in Eqs. (3.27) and (3.28) bocomes crucial to suppress spurious oscilations. When limiters are used, the reconstruction of \((u_{L} )_{j}^{n - 1/4}\) and \((u_{R} )_{j}^{n - 1/4}\) is written as

$$\left( {u_{L} } \right)_{j}^{n - 1/4} = U_{L} + \frac{\Delta x}{4}u_{x}^{L} + \frac{\Delta t}{4}u_{t}^{L} ,$$
(3.30)
$$\left( {u_{R} } \right)_{j}^{n - 1/4} = U_{R} - \frac{\Delta x}{4}u_{x}^{R} + \frac{\Delta t}{4}u_{t}^{R} ,$$
(3.31)

where \(u_{x}^{L}\), \(u_{x}^{R}\), \(u_{t}^{L}\), and \(u_{t}^{R}\) are the limited derivatives. In this book, the weighted biased averaging procedure limiter (WBAP-L2) [3] is adopted. The limited slopes (spatial derivatives) are

$$u_x^L = (u_x )_{j - 1/2}^{n - 1/2} W(1,\theta _1^L ,\theta _2^L ),\,\theta _1^L = \frac{{{{(U_R - U_L )} / {(\Delta x/2)}}}}{{(u_x )_{j - 1/2}^{n - 1/2} }}{\text{,}}\,\theta _2^L = \frac{{(u_x )_{j + 1/2}^{n - 1/2} }}{{(u_x )_{j - 1/2}^{n - 1/2} }},$$
(3.32)
$$u_x^R = (u_x )_{j + 1/2}^{n - 1/2} W(1,\theta _1^R ,\theta _2^R ),\,\theta _1^R = \frac{{{{(U_R - U_L )} / {(\Delta x/2)}}}}{{(u_x )_{j + 1/2}^{n - 1/2} }}{\text{,}}\,\theta _2^R = \frac{{(u_x )_{j - 1/2}^{n - 1/2} }}{{(u_x )_{j + 1/2}^{n - 1/2} }},$$
(3.33)

where the limiter function is

$$W(1,\theta _1 ,\theta _2 )\, = \,\left\{ {\begin{array}{*{20}c} {\frac{{5 + {1 / {\theta _1 }} + {1 / {\theta _2 }}}}{{5 + {1 / {\theta _1 ^2 }} + {1 / {\theta _2 ^2 }}}},} & {{\text{if}}\,\theta _1 \,{\text{and}}\,\theta _2 \, > \,0} \\ {0,} & {{\text{else}}} \\ \end{array} } \right.$$
(3.34)

Once the limited slopes are obtained, the limited temporal derivatives can be calculated by the chain rule and the conservation equation itself, i.e.,

$$u_{t}^{L} = - u_{x}^{L} \left. {\frac{\partial f}{{\partial u}}} \right|_{{u = U_{L} }} {, }u_{t}^{R} = - u_{x}^{R} \left. {\frac{\partial f}{{\partial u}}} \right|_{{u = U_{R} }}$$
(3.35)

3.3.2 Scheme for Linear Scalar Convection Equation

Let f = au, then Eq. (3.1) becomes the linear scalar convection equation. Without loss of generality, a is assumed to be a positive constant. For this simple situation, the exact solution of the local Riemann problem with initial data \((u_{L} )_{j}^{n - 1/4}\) and \((u_{R} )_{j}^{n - 1/4}\) can be readily obtained. If the limiter is not used, the interface flux FC (Eq. (3.29)) is

$$F_{C} = a\left[ {U_{L} + \frac{\Delta x}{4}(u_{x} )_{j - 1/2}^{n - 1/2} + \frac{\Delta t}{4}(u_{t} )_{j - 1/2}^{n - 1/2} } \right], \, (a > 0)$$
(3.36)

With this FC, the upwind CESE scheme, which is a combination of Eqs. (3.2) and (3.26), can be written in a matrix form as Eqs. (3.8) and (3.9), in which q = [u, (∆x/4)ux]T and the matrices QL and QR are functions of the CFL number ν = at/∆x:

$${\mathbf{Q}}_{L} = \frac{1}{2}\left[ {\begin{array}{*{20}c} {1 + \nu } \\ { - 1 + \nu } \\ \end{array} \, \begin{array}{*{20}c} {1 - v^{2} } \\ { - 1 + 4\nu - \nu^{2} } \\ \end{array} } \right], \, {\mathbf{Q}}_{R} = \frac{1}{2}\left[ {\begin{array}{*{20}c} {1 - \nu } \\ {1 - \nu } \\ \end{array} \, \begin{array}{*{20}c} { - 1 + v^{2} } \\ { - 1 + v^{2} } \\ \end{array} } \right]$$
(3.37)

If the initial data \((u_{L} )_{j}^{n - 1/4}\) and \((u_{R} )_{j}^{n - 1/4}\) are reconstructed using the limiter, the matrix form shown as Eqs. (3.8) and (3.9) still holds, but the matrices QL and QR should be

$${\mathbf{Q}}_{L} = \frac{1}{2}\left[ {\begin{array}{*{20}c} {1 + \nu } \\ { - 1 + \nu } \\ \end{array} \, \begin{array}{*{20}c} {1 - v^{2} } \\ { - 1 + 2\left( {1 + \phi_{L} } \right)\nu + \left( {1 - 2\phi_{L} } \right)\nu^{2} } \\ \end{array} } \right], \, {\mathbf{Q}}_{R} = \frac{1}{2}\left[ {\begin{array}{*{20}c} {1 - \nu } \\ {1 - \nu } \\ \end{array} \, \begin{array}{*{20}c} { - 1 + v^{2} } \\ { - 1 + v^{2} } \\ \end{array} } \right]$$
(3.38)

where

$$\phi _L = W(1,\theta _1^L ,\theta _2^L ){\text{,}}\,\theta _1^L = \frac{{{{(U_R - U_L )} / {(\Delta x/2)}}}}{{(u_x )_{j - 1/2}^{n - 1/2} }}{\text{,}}\,\theta _2^L = \frac{{(u_x )_{j + 1/2}^{n - 1/2} }}{{(u_x )_{j - 1/2}^{n - 1/2} }}$$
(3.39)

The scheme without limiter Eq. (3.37) can be regarded as the special case of Eq. (3.38) with the limiter function \(\phi_{L} = 1\).

Based on matrices QL and QR in Eq. (3.38), we can examine the property of the upwind CESE scheme at the limiting case of ν = 0. Recall that the aα scheme becomes very diffusive when ν → 0 and cannot guarantee that \({\mathbf{q}}_{j}^{n} \to {\mathbf{q}}_{j}^{n - 1}\) as ∆t → 0 (but ∆x is a finite constant). However, the upwind CESE scheme does not suffer from such a deficiency. A direct evaluation of matrices QL and QR in Eq. (3.38) as ν → 0 shows

$$\begin{gathered} {\mathbf{Q}}_{L}^{2} \to \frac{1}{4}\left[ {\begin{array}{*{20}c} 1 & 1 \\ { - 1} & { - 1} \\ \end{array} } \right]^{2} = {\mathbf{0}}, \, {\mathbf{Q}}_{R}^{2} \to \frac{1}{4}\left[ {\begin{array}{*{20}c} 1 \\ 1 \\ \end{array} \, \begin{array}{*{20}c} { - 1} \\ { - 1} \\ \end{array} } \right]^{2} = {\mathbf{0}}, \, \hfill \\ {\mathbf{Q}}_{L} {\mathbf{Q}}_{R} + {\mathbf{Q}}_{R} {\mathbf{Q}}_{L} \to \frac{1}{4}\left[ {\begin{array}{*{20}c} 1 & 1 \\ { - 1} & { - 1} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} 1 \\ 1 \\ \end{array} \, \begin{array}{*{20}c} { - 1} \\ { - 1} \\ \end{array} } \right] + \frac{1}{4}\left[ {\begin{array}{*{20}c} 1 \\ 1 \\ \end{array} \, \begin{array}{*{20}c} { - 1} \\ { - 1} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} 1 & 1 \\ { - 1} & { - 1} \\ \end{array} } \right] = {\mathbf{I}} \hfill \\ \end{gathered}$$
(3.40)

Consequently, the time marching scheme for a complete time step (Eq. (3.9)) can always ensure that \({\mathbf{q}}_{j}^{n} \to {\mathbf{q}}_{j}^{n - 1}\) as ∆t → 0, regardless of the form of the limiter function. Unlike the aα scheme, the upwind CESE scheme is inherently CFL-number insensitive.

3.3.3 Scheme for Euler Equations

The 1D unsteady Euler equations for a perfect gas are written as

$$\frac{{\partial {\mathbf{U}}}}{\partial t} + \frac{{\partial {\mathbf{F}}}}{\partial x} = {\mathbf{0,}}$$
(3.41)

where \({\varvec{U}}={\left[\rho ,\hspace{0.33em}\rho u,\hspace{0.33em}E\right]}^{T}\), \({\varvec{F}}={\left[\rho u,\hspace{0.33em}\rho {u}^{2}+p,\hspace{0.33em}(E+p)u\right]}^{T}\) are the vectors of the conserved variables and the inviscid flux. Here, \(\rho\), u, and p represent the density, velocity, and pressure, respectively. The total energy per unit volume is denoted by E, which is \(E=p/(\gamma -1)+\rho {u}^{2}/2\) with constant ratio of specific heat \(\gamma =1.4\).

The upwind CESE scheme for a scalar equation can be directly applied to solve each component of U. However, the upwind procedure to calculate the flux through the interface between \(({\text{CE}}^{ - } )_{j}^{n}\) and \(({\text{CE}}^{ + } )_{j}^{n}\) needs a substantial extension, because of the complexity of the eigen-structure of Eq. (3.41). Still, the flux vector FC can be expressed as

$${\mathbf{F}}_{C} = {\hat{\mathbf{F}}}\left( {({\mathbf{U}}_{L} )_{j}^{n - 1/4} ,({\mathbf{U}}_{R} )_{j}^{n - 1/4} } \right),$$
(3.42)

where \({\hat{\mathbf{F}}}\) stands for any appropriate upwind numerical flux solver, e.g., approximate Rimann solvers and other upwind flux functions. Moreover, \(({\mathbf{U}}_{L} )_{j}^{n - 1/4}\) and \(({\mathbf{U}}_{R} )_{j}^{n - 1/4}\) are the data on the two sides of line segment CD in Fig. 3.2, which are reconstructed with an appropriate limiter and serve as the discontinuous initial data of the local Riemann problem. Fortunately, any efficient and robust upwind flux solver [4, 5] exsiting in the FVM literature can be employed to calculate FC.

3.3.4 Remarks on Upwind CESE Method

For the purpose of capturing discontinuities, the upwind CESE method introduces necessary numerical dissipation by the upwind procedure to calculate FC (see Eqs. (3.29)–(3.35)). This fact might lead to confusion between the classical upwind FVM [4, 5] and the present upwind CESE method. In the former, the upwind flux technique to tackle local Riemann problems is viewed as the building block of the whole method. In the latter, the upwind flux technique plays a different role.

To shed light on this issue, the interval [j − 1/2, j + 1/2] is taken as a representative control volume to analyse, which is called “cell” in the FVM, and marked as line segment AB in Fig. 3.2. In this section, three fluxes are related with [j − 1/2, j + 1/2], denoted by FL, FR, and FC. Apparently, these fluxes can be classified as the flux through the boundary of the control volume (FL and FR) and the flux through the diaphragm inside the control volume (FC). For the upwind CESE scheme, the upwind procedure is performed only to calculate FC, while fluxes through the boundaries are not linked to any local Riemann problems. Owing to the time-marching strategy on the staggered mesh, information at points xj−1/2 and xj+1/2 are ready before evaluating FL and FR. Thus, the procedure to calculate FL and FR only involves Taylor expansion inside the SE, the definition of physical flux function f(u), and the Cauchy-Kowalewski procedure (steps to derive ut and ft from ux as shown in Eqs. (2.26)–(2.28)). On the contrary, the non-staggered FVM employs the upwind flux solver to get all fluxes through boundaries of control volumes, because each FL or FR should be treated as the result of a local Riemann problem. Usually, FC is not considered in the FVM.

Recall that FC is absent in Eq. (3.2). Therefore, the upwind procedure in the CESE scheme never affects the time-marching algorithm for the average value of u(x, t) on [j − 1/2, j + 1/2], but solely redistributes u(x, t) on [j − 1/2, j + 1/2] through the calculation of ux using Eq. (3.26). However, the upwind FVM relies on two upwind numerical fluxes \(\hat{f}_{j - 1/2}\) and \(\hat{f}_{j + 1/2}\) to update the average value of u(x, t) on [j − 1/2, j + 1/2]. This is the reason why we claim that the upwind CESE method utilizes the upwind technique in a different way from the traditional upwind FVM.

3.4 Comparison of Different CESE Schemes

So far, four CESE schemes, namely the a scheme, the aα scheme, the CNI scheme, and the upwind CESE scheme, have been introduced. To make a comparison, their main formulas and properties are listed in the following tables. Table 3.1 indicates that the CNI and upwind CESE schemes are more favourable for the practical simulations, since they can capture discontinuities with reasonable numerical dissipation and they are free of the sensitivity issue which is encountered by the aα scheme. The key formulas in each scheme are shown in Table 3.2. It is notable that all CESE schemes share a common approach to updating \(u_{j}^{n}\). Only the a scheme and the upwind CESE scheme update \((u_{x} )_{j}^{n}\) are based on the conservation law for sub-CEs. In contrast, the aα and the CNI schemes construct \((u_{x} )_{j}^{n}\) using the finite-difference-like approximation followed by some kind of weighted averaging technique.

Table 3.1 Properties of four different CESE schemes
Table 3.2 The formulas to update \(u_{j}^{n}\) and \((u_{x} )_{j}^{n}\) in each CESE scheme

When applied to the linear scalar convection equation (Eq. (3.1) with f = au and a is a positive constant), it is possible to rewrite the CESE scheme in a very compact matrix form. In Table 3.3, the coefficient matrices for different CESE schemes are listed. The matrices for the CNI scheme are not tabulated due to their lengthiness. Such QL and QR, together with Eqs. (3.8) and (3.9) are useful for revealing the instrinct properties of different CESE schemes, e.g., the stability of each scheme.

Table 3.3 The matrices QL and QR in Eq. (3.8), which is the matrix form of the CESE method applied to the linear scalar convection equation (Eq. (3.1) with f = au, a > 0)

3.5 Numerical Examples

Here, the 1D scalar convection problem and Sod’s shock-tube problem with uniform grid size of 0.01 are computed using different CESE schemes. The corresponding C +  + source codes implementing the a\(\alpha\) CESE scheme are presented in the Appendix. For Eq. (3.1) with f = u, a square wave propagates in a computational domain [−1, 1] till t = 2.0 with the initial condition described as

$$u(x,0) = \left\{ \begin{gathered} 1,\;\;\;if\; - 0.5 \le x \le 0.5 \hfill \\ 0.\;\;\;else \hfill \\ \end{gathered} \right.$$
(3.43)

The periodic boundary condition is imposed on both ends. The results are plotted in Fig. 3.3. For CFL = 1, all three schemes provide a virtually exact result. When CFL = 0.8, both the a-\(\alpha\) and the CNI schemes suffer from strong oscillations on the upwind sides of the discontinuities, while the upwind scheme provides a result with satisfactory accuracy. If CFL is further decreased to an extremely small value, the CNI and upwind scheme can capture the discontinuities very well, but the large dissipation in the a−\(\alpha\) scheme abnormally smears out the discontinuities. This case proves the CFL insensitivity of the CNI and upwind CESE schemes.

Fig. 3.3
3 line graphs. They have overlapping lines for C F L = 1, 0.8, and 1 E minus 4. Graph a for a-alpha C E S E has an inverted parabola with a wide peak for 1 E minus 4. All graphs have unit step function lines for C F L values. The line for C F L = 0.8 has fluctuations at t = minus 0.5 and 0.5 in graphs a and b.

Solutions for scalar convection equation: square wave problem at t = 2

In the Sod’s shock-tube problem [6], the gas is initially separated at x = 1 with left and right states \((\rho , u, p)_{L} = \left( {1.0, 0.0, 1.0} \right)\) and \((\rho , u,p)_{R} = \left( {0.125, 0.0, 0.1} \right)\). In Fig. 3.4, the computed density profiles at t = 0.4 are shown. For CFL = 0.8, all the schemes can capture the wave structures precisely. For an extremely small CFL number, the CNI and upwind schemes maintain great accuracy, but the a-\(\alpha\) scheme seriously smeared out the rarefaction, contact, and shock waves.

Fig. 3.4
3 line graphs a, b, and c. They have overlapping lines for exact, C F L = 0.8, and C F L = 1 E minus 6. The lines follow a declining step trend. Graph a for a-alpha C E S E has a concave-down declining line for C F L = 1 E minus 6.

Density profile of Sod’s shock-tube problem at t = 0.4