|WikiProject Mathematics||(Rated Start-class, Low-priority)|
|WikiProject Physics / Fluid Dynamics||(Rated Start-class, Mid-importance)|
Model equation incorrect?
The model equation is first order: I wonder if it really can govern a wave alone?
- It is both a linear advection equation and a first-order linear wave equation. That is, it may be interpreted either as a model equation that represents the propagation of a wave (for example, a discontinuity) in the x-direction with a constant velocity a, or the advection of some scalar quantity u with a uniform velocity a in the x-direction. Please refer to page 109 and 110 of the book Numerical Computation of Internal and External Flows Vol. 1 - Fundamentals of Computational Fluid Dynamics (2nd ed.) by Charles Hirsch. Salih (talk) 16:16, 28 May 2009 (UTC)
"The first-order upwind scheme introduces severe numerical diffusion in the solution where large gradients exist."
This can't possibly be true, since the value of the gradient does not affect the accuracy of any finite difference algorithm. Perhaps the writer meant in regions of high second order derivatives?
Also, the proposed second and third order schemes are supposed to be less diffusive, but it can be shown easily that higher order stencils incur more numerical diffusion at discontinuities. Perform convection on a Heaviside step function, and you will see that first order derivatives perform best for this function. 126.96.36.199 (talk) 13:27, 19 January 2012 (UTC)
Perhaps he means dissipation? Though, dissipation can be thought of as artificial (or numerical) diffusion. Running the Forward-Euler, first order Upwind scheme on a simple advection (first order wave) equation with a coefficient of unity (A=1) with a binary initial condition (either 0 or 1) and periodic boundary conditions will eventually lead to no gradients what-so-ever. Thus, diffusion. The binary condition is the equivalent of an infinite gradient (the rest of the conditions are as simple as possible). I believe that this is what the original author meant. Throw the following into Matlab for an example:
temp=size(u); N=temp(2) h=0.1; k=0.5*h; %CFL condition for t=0:k:1000 u(2:N)=u(2:N)-(k/h)*(u(2:N)-u(1:N-1)); u(1)=u(1)-(k/h)*(u(1)-u(N)); end
Just set the initial u to 0 or 1 at 100 points (or more if you wish to change h). Obviously, we do need to cite an appropriate source for the dissipation but the statement itself is not "dubious"188.8.131.52 (talk) 17:24, 21 April 2014 (UTC)