Lax–Wendroff method explained

The Lax–Wendroff method, named after Peter Lax and Burton Wendroff,[1] is a numerical method for the solution of hyperbolic partial differential equations, based on finite differences. It is second-order accurate in both space and time. This method is an example of explicit time integration where the function that defines the governing equation is evaluated at the current time.

Definition

Suppose one has an equation of the following form: \frac + \frac = 0where and are independent variables, and the initial state, is given.

Linear case

In the linear case, where, and is a constant,[2] u_i^ = u_i^n - \frac A\left[u_{i+1}^{n} - u_{i-1}^{n} \right] + \frac A^2\left[u_{i+1}^{n} -2 u_{i}^{n} + u_{i-1}^{n} \right].Here

n

refers to the

t

dimension and

i

refers to the

x

dimension.This linear scheme can be extended to the general non-linear case in different ways. One of them is letting A(u) = f'(u) = \frac

Non-linear case

The conservative form of Lax-Wendroff for a general non-linear equation is then: u_i^ = u_i^n - \frac \left[f(u_{i+1}^{n}) - f(u_{i-1}^{n}) \right] + \frac \left[A_{i+1/2} \left(f(u_{i+1}^{n}) - f(u_{i}^{n})\right) - A_{i-1/2}\left(f(u_{i}^{n})-f(u_{i-1}^{n})\right) \right].where

Ai\pm

is the Jacobian matrix evaluated at \frac (u^n_i + u^n_).

Jacobian free methods

To avoid the Jacobian evaluation, use a two-step procedure.

Richtmyer method

What follows is the Richtmyer two-step Lax–Wendroff method. The first step in the Richtmyer two-step Lax–Wendroff method calculates values for at half time steps, and half grid points, . In the second step values at are calculated using the data for and .

First (Lax) steps: u_^ = \frac(u_^n + u_^n) - \frac(f(u_^n) - f(u_^n)), u_^= \frac(u_^n + u_^n) - \frac(f(u_^n) - f(u_^n)).

Second step: u_i^ = u_i^n - \frac \left[f(u_{i+1/2}^{n+1/2}) - f(u_{i-1/2}^{n+1/2}) \right].

MacCormack method

See main article: MacCormack method. Another method of this same type was proposed by MacCormack. MacCormack's method uses first forward differencing and then backward differencing:

First step: u_^= u_^n - \frac(f(u_^n) - f(u_^n)).Second step: u_i^ = \frac (u_^n + u_^*) - \frac \left[f(u_{i}^{*}) - f(u_{i-1}^{*}) \right].

Alternatively,First step: u_^ = u_^n - \frac(f(u_^n) - f(u_^n)).Second step: u_i^ = \frac (u_^n + u_^*) - \frac \left[f(u_{i+1}^{*}) - f(u_{i}^{*}) \right].

References

Notes and References

  1. P.D Lax . B. Wendroff . 1960 . Systems of conservation laws . Commun. Pure Appl. Math. . 13 . 217–237 . 10.1002/cpa.3160130205 . 2 . https://web.archive.org/web/20170925220837/http://www.dtic.mil/get-tr-doc/pdf?AD=ADA385056 . live . September 25, 2017 .
  2. Book: LeVeque, Randall J. . Numerical Methods for Conservation Laws . Boston . Birkhäuser . 1992 . 0-8176-2723-5 . 125 .