Upwind scheme

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

In computational physics, upwind schemes denote a class of numerical discretization methods for solving hyperbolic partial differential equations. Upwind schemes use an adaptive or solution-sensitive finite difference stencil to numerically simulate the direction of propagation of information in a flow field. The upwind schemes attempt to discretize hyperbolic partial differential equations by using differencing biased in the direction determined by the sign of the characteristic speeds. Historically, the origin of upwind methods can be traced back to the work of Courant, Isaacson, and Rees who proposed the CIR method.[1]

Model equation

To illustrate the method, consider the following one-dimensional linear advection equation


  \qquad \frac{\partial u}{\partial t} + a \frac{\partial u}{\partial x} = 0

which describes a wave propagating along the x-axis with a velocity a. This equation is also a mathematical model for one-dimensional linear advection. Consider a typical grid point i in the domain. In a one-dimensional domain, there are only two directions associated with point i – left (towards negative infinity) and right (towards positive infinity). If a is positive, the travelling wave solution of the equation above propagates towards the right, the left side of i is called upwind side and the right side is the downwind side. Similarly, if a is negative the travelling wave solution propagates towards the left, the left side is called downwind side and right side is the upwind side. If the finite difference scheme for the spatial derivative, \partial u / \partial x contains more points in the upwind side, the scheme is called an upwind-biased or simply an upwind scheme.

First-order upwind scheme

The simplest upwind scheme possible is the first-order upwind scheme. It is given by[2]


  \quad (1) \qquad \frac{u_i^{n+1} - u_i^n}{\Delta t} + a \frac{u_i^n - u_{i-1}^n}{\Delta x} = 0 \quad \text{for} \quad a > 0

  \quad (2) \qquad \frac{u_i^{n+1} - u_i^n}{\Delta t} + a \frac{u_{i+1}^n - u_i^n}{\Delta x} = 0 \quad \text{for} \quad a < 0

Compact form

Defining


  \qquad \qquad a^+ = \text{max}(a,0)\,, \qquad a^- = \text{min}(a,0)

and


  \qquad \qquad u_x^- = \frac{u_i^{n} - u_{i-1}^{n}}{\Delta x}\,, \qquad u_x^+ = \frac{u_{i+1}^{n} - u_{i}^{n}}{\Delta x}

the two conditional equations (1) and (2) can be combined and written in a compact form as


  \quad (3) \qquad u_i^{n+1} = u_i^n - \Delta t \left[ a^+ u_x^- + a^- u_x^+ \right]

Equation (3) is a general way of writing any upwind-type schemes.

Stability

The upwind scheme is stable if the following Courant–Friedrichs–Lewy condition (CFL) is satisfied.[3]


  \qquad \qquad c = \left| \frac{a\Delta t}{\Delta x} \right| \le 1 .

A Taylor series analysis of the upwind scheme discussed above will show that it is first-order accurate in space and time. Modified wavenumber analysis shows that the first-order upwind scheme introduces severe numerical diffusion/dissipation in the solution where large gradients exist(due to neccessity of high wavenumbers to represent sharp gradients).

Second-order upwind scheme

The spatial accuracy of the first-order upwind scheme can be improved by including 3 data points instead of just 2, which offers a more accurate finite difference stencil for the approximation of spatial derivative. For the second-order upwind scheme, u_x^- becomes the 3-point backward difference in equation (3) and is defined as


  \qquad \qquad u_x^- = \frac{3u_i^n - 4u_{i-1}^n + u_{i-2}^n}{2\Delta x}

and u_x^+ is the 3-point forward difference, defined as


  \qquad \qquad u_x^+ = \frac{-u_{i+2}^n + 4u_{i+1}^n - 3u_i^n}{2\Delta x}

This scheme is less diffusive compared to the first-order accurate scheme and is called linear upwind differencing (LUD) scheme.

Third-order upwind scheme

For the third-order upwind scheme, u_x^- in equation (3) is defined as


  \qquad \qquad u_x^- = \frac{2u_{i+1} + 3u_i - 6u_{i-1} + u_{i-2}}{6\Delta x}

and u_x^+ is defined as


  \qquad \qquad u_x^+ = \frac{-u_{i+2} + 6u_{i+1} - 3u_i - 2u_{i-1}}{6\Delta x}

This scheme is less diffusive compared to the second-order accurate scheme. However, it is known to introduce slight dispersive errors in the region where the gradient is high.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.