Upwind scheme
In computational fluid dynamics, 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]
Contents
Model equation
To illustrate the method, consider the following one-dimensional linear wave equation \[ \qquad \frac{\partial u}{\partial t} + a \frac{\partial u}{\partial x} = 0 \] which describes a wave propagating in the \(x\)-direction 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 and right. If \(a\) is positive the left side is called upwind side and right side is the downwind side. Similarly, if \(a\) is negative 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 \] 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. The upwind scheme is stable if the following Courant–Friedrichs–Lewy condition (CFL) condition 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. The first-order upwind scheme introduces severe numerical diffusion in the solution where large gradients exist[dubious ].
Second-order upwind scheme
The spatial accuracy of the first-order upwind scheme can be improved by choosing a more accurate finite difference stencil for the approximation of spatial derivative. For the second-order upwind scheme, \(u_x^-\) in equation (3) 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 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
- ↑ Courant, R., Isaacson, E., and Rees, M. (1952). "On the Solution of Nonlinear Hyperbolic Differential Equations by Finite Differences", Comm. Pure Appl. Math., 5, 243-255.
- ↑ Script error
- ↑ Script error
|