because the matrix, 1 \( \textstyle - \; { \frac { k } { 2 } } A - { \frac { h } { 2 } } ( 1 - u _ { E } ) \), on the left hand side is explicit, as is the right hand side. That is, this matrix and the right hand side contain only old data, namely only information from the previous step, u(t). Euler estimate \( u _ { E } \) is an explicit one step computation using u(t). Significant advantages are: the matrix on the left hand side is tridiagonal with constants on the sub/super-diagonals, and the diagonal terms are \( O ( 1 ) \) strong. The procedure (7) is only linearly stable but we will show empirically that it gives good results when compared to pdepe when this MatLab function is appropriate, that is, in both the one-dimensional and rotationally symmetric 2-D case. Not only is the method (7) step-wise stable but also stable for initial data which may not be smooth.

Figure 1 shows the results for \( h \, = \, 1 / \) 5, \( k \) = 2.5 compared to pdepe. Notice that at \( t \) = 20 the agreement is remarkable; and that at \( t = h \), where the wave front profile is very steep, our Godunov splitting described in Section 3.2, specifically eq.(8), is very stable. The CFL number, \( k \) = 2.5, used to get Figure 1 is much larger than would be possible with an explicit method (LeVeque, 2007).

# 3.2 2-D case: Godunov–Strang–Yoshida splittings

It turns out that a generalization to the 2-D problem is a straightforward variant of Strang–Yoshida splittings (Strang, 1968; Yoshida, 1990), which are themselves variants of Godunov’s method (Godunov and Ryabenkii, 1987). The following is a fully implicit variant of our two-dimensional scheme, with two intermediate arrays, \( u ^ { \star } \) and \( u ^ { \star \star } \),

\[ u ^ { \star } = u ( t ) + { \frac { k } { 4 } } \left( A _ { x } u ^ { \star } + A _ { x } u ( t ) \right) \qquad \qquad \qquad \qquad ( 8 \mathrm { a } ) \]

\[ \begin{array} { l l } { { u ^ { \star \star } = u ^ { \star } + \displaystyle \frac { k } { 2 } \left( A _ { y } u ^ { \star \star } + A _ { y } u ^ { \star } \right) } } & { { \qquad \qquad ( \mathrm { 8 b } ) } } \\ { { \qquad \qquad + \displaystyle \frac { h } { 2 } \left( ( 1 - u ^ { \star \star } ) u ^ { \star \star } + ( 1 - u ^ { \star } ) u ^ { \star } \right) } } & { { } } \end{array} \]

\[ u ( t + h ) = u ^ { \star \star } + { \frac { k } { 4 } } \left( A _ { x } u ( t + h ) + A _ { x } u ^ { \star \star } \right) . \eqno ( 8 \mathrm { c } ) \]

In (8), the operators \( A _ { x } \) and \( A _ { y } \) are the same as (3) for directions x and y, respectively. For simulations on a lattice, \( u _ { i j } ( t ) = u ( t , x _ { 0 } + ( i - 1 ) \Delta x , y _ { 0 } + \)

\( ( j - 1 ) \Delta y ) \), where 1 \( < i < N _ { x } \), 1 \( \leq j \leq N _ { y } \) and \( \Delta x = \Delta y , \), the following gives the action of the \( A _ { x } , A _ { y } \) operators:

\[ \begin{array} { r l r } { A _ { x } u _ { i , j } } & { = } & { u _ { i - 1 , j } - 2 u _ { i , j } + u _ { i + 1 , j } , } \\ { A _ { y } u _ { i , j } } & { = } & { u _ { i , j - 1 } - 2 u _ { i , j } + u _ { i , j + 1 } . } \end{array} \]

The compression scheme and code outline given in Appendix A show that only a maximum of one row or column (i.e.,\( \operatorname* { m a x } ( N _ { x } , N _ { y } ) ) \) of storage is needed for \( u ^ { \star } \) and \( u ^ { \star \star } \).

Again because the fully implicit quadratic vector equation in (8b) is awk-ward to solve, we use an Euler estimate in one of the terms. Here is one integration time step of (8) in discrete semi-implicit form:

\[ \left( 1 - { \frac { k } { 4 } } A _ { x } \right) u ^ { \star } = \left( 1 + { \frac { k } { 4 } } A _ { x } \right) u ( t ) \eqno ( 9 \mathrm { a } ) \]

\[ u _ { E } = u ^ { \star } + k A _ { y } u ^ { \star } + h ( 1 - u ^ { \star } ) u ^ { \star } \qquad \mathrm { ( 9 b ) } \]

\[ \left( 1 - { \frac { k } { 2 } } A _ { y } - { \frac { h } { 2 } } ( 1 - u _ { E } ) \right) u ^ { \star \star } = \left( 1 + { \frac { k } { 2 } } A _ { y } + { \frac { h } { 2 } } ( 1 - u ^ { \star } ) \right) u ^ { \star } \qquad ( 9 \mathrm { c } ) \]

\[ \left( 1 - { \frac { k } { 4 } } A _ { x } \right) u ( t + h ) = \left( 1 + { \frac { k } { 4 } } A _ { x } \right) u ^ { \star \star } . \eqno ( 9 \mathrm { d } ) \]

Equations (9a), (9c), and (9d) are solved in sequence as multiple inde-pendent tridiagonal systems for \( u ^ { \star } , u ^ { \star \star } \) and the final step \( u ( t + h ) \).

# 3.3 Symmetries in 2-D case

Our Godunov scheme (9) is not rotationally symmetric, and thus one way to estimate the error is to assess a solution using (9) for a symmetric problem. Again, we can use pdepe but now with the cylindrically symmetric parame-ter choice m=1 (see Section 12.5 in (Higham and Higham, 2005)). Figure 2 shows that any asymmetries are not apparent without more careful exami-nation. Even the wave front portrait of the 2-D case in the left-hand panel of Figure 3 and the error estimate in the right-hand panel of the same Figure are not sufficiently quantitative. In particular, there should be no distinction between x and y directions in (8), while a 2-D plot of the error distribution shows a small asymmetry (compare the right-hand plot in Figure 4 to the left).