Lax–Friedrichs method

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The Lax–Friedrichs method, named after Peter Lax and Kurt O. Friedrichs, is a numerical method for the solution of hyperbolic partial differential equations based on finite differences. The method can be described as the FTCS (forward in time, centered in space) scheme with an artificial viscosity term of 1/2. One can view the Lax–Friedrichs method as an alternative to Godunov's scheme, where one avoids solving a Riemann problem at each cell interface, at the expense of adding artificial viscosity.

Illustration for a Linear Problem[edit]

Consider a one-dimensional, linear hyperbolic partial differential equation for u(x,t) of the form:

 u_t + au_x = 0\,

on the domain

 b \leq x \leq c,\; 0 \leq t \leq d

with initial condition

u(x,0) = u_0(x)\,

and the boundary conditions

u(b,t) = u_b(t)\,
u(c,t) = u_c(t).\,

If one discretizes the domain (b, c) \times (0, d) to a grid with equally spaced points with a spacing of \Delta x in the x-direction and \Delta t in the t-direction, we define

u_i^n = u(x_i, t^n) \text{ with } x_i = b + i\,\Delta x ,\, t^n = n\,\Delta t \text{ for } i = 0,\ldots,N ,\, n = 0,\ldots,M,

where

N = \frac{c - b}{\Delta x} ,\, M = \frac{d}{\Delta t}

are integers representing the number of grid intervals. Then the Lax–Friedrichs method for solving the above partial differential equation is given by:

\frac{u_i^{n+1} - \frac{1}{2}(u_{i+1}^n + u_{i-1}^n)}{\Delta t} + a\frac{u_{i+1}^n - u_{i-1}^n}{2\,\Delta x} = 0

Or, rewriting this to solve for the unknown u_i^{n+1},

 u_i^{n+1} = \frac{1}{2}(u_{i+1}^n + u_{i-1}^n) - a\frac{\Delta t}{2\,\Delta x}(u_{i+1}^n - u_{i-1}^n)\,

Where the initial values and boundary nodes are taken from

u_i^0 = u_0(x_i)
u_0^n = u_b(t^n)
u_N^n = u_c(t^n).

Extensions to Nonlinear Problems[edit]

A nonlinear hyperbolic conservation law is defined through a flux function  f :

 u_t + ( f(u) )_x = 0.

In the case of  f(u) = a u , we end up with a scalar linear problem. Note that in general,  u is a vector with m equations in it. The generalization of the Lax-Friederichs method to nonlinear systems takes the form[1]

  u_i^{n+1} = \frac{1}{2}(u_{i+1}^n + u_{i-1}^n) - \frac{\Delta t}{2\,\Delta x}( f( u_{i+1}^n ) - f( u_{i-1}^n ) ).

This method is conservative and first order accurate, hence quite dissipative. It can, however be used as a building block for building high-order numerical schemes for solving hyperbolic partial differential equations, much like Euler time steps can be used as a building block for creating high-order numerical integrators for ordinary differential equations.

We note that this method can be written in conservation form:

 u_i^{n+1} = u^n_i - \frac{\Delta t}{ \Delta x} \left( \hat{f}^n_{i+1/2} - \hat{f}^n_{i-1/2} \right),

where

 \hat{f}^n_{i-1/2} = \frac{1}{2} \left( f_{i-1} + f_{i} \right) - \frac{ \Delta x}{ 2 \Delta t  } \left( u^n_{i} - u^n_{i-1} \right).

Without the extra terms  u^n_i and  u^n_{i-1} in the discrete flux,  \hat{f}^n_{i-1/2} , one ends up with the FTCS scheme, which is well known to be unconditionally unstable for hyperbolic problems.

Stability and accuracy[edit]

Example problem initial condition
Lax-Friedrichs solution

This method is explicit and first order accurate in time and second order accurate in space provided u_0(x),\, u_b(t),\, u_c(t) are sufficiently-smooth functions. Under these conditions, the method is stable if and only if the following condition is satisfied:

 \left| a\frac{\Delta t}{\Delta x} \right| \leq 1.

(A von Neumann stability analysis can show the necessity of this stability condition.) The Lax–Friedrichs method is classified as having second-order dissipation and third order dispersion (Chu 1978, pg. 304). For functions that have discontinuities, the scheme displays strong dissipation and dispersion (Thomas 1995, §7.8); see figures at right.

References[edit]

  1. ^ LeVeque, Randy J. Numerical Methods for Conservation Laws", Birkhauser Verlag, 1992, p. 125.