In chapter 7 of Numerical Computation of Internal and External Flows (Second Edition) (https://www.sciencedirect.com/science/article/abs/pii/B9780750665940500497) the author describes the diffusion error as the ratio of the magnitude of the numerical amplification factor, which I will call $( G_{numeric})$, to the magnitude of the amplification factor found from the Fourier transform of the original differential equation, which I will call $(G_{diff.eq}$):

$$\epsilon_{diffusion} = \frac{|G_{numeric}|}{|G_{diff.eq}|}$$

For a linear hyperbolic convection equation $(u_t + a u_x = 0)$, the Fourier transform gives:

$$G_{diff.eq} = 1$$

Thus the diffusive error of the numerical scheme is:

$$\epsilon_{diffusion} = |G_{numeric}|$$

The author gives an example of finding this diffusive error for the first order upwind scheme and shows that:

$$\epsilon_{diffusion} = |G_{numeric}| = \sqrt{1 - 4\sigma(1-\sigma)\sin(\frac{\phi}{2})^2}$$

where $\sigma$ is the Courant number $(\sigma = a \frac{\Delta t}{\Delta x})$, $\phi$ is the phase angle $(\phi = k \Delta x)$, and $k$ is the wave number.

As we can see the diffusive error is a function of the wave number $k$, and the author states that for low wave number $\epsilon_{diffusion} = 0.995$ and for high wave number $\epsilon_{diffusion} = 0.98$ . Thus, after 80 time steps, the decrease in amplitude in the low wave number regime is $.995^{80} = 0.67$ and the decreases in the amplitude in the high wave number regime is $.98^{80} = .2$.

My confusion is this, the low wave number regime has a smaller error (assuming $\epsilon_{diffusion} = 1$ means no diffusive error), yet after n time steps, the solution degrades more in this regime than in the high wave number regime, where the diffusive error was greater. It seems to me then, that actually the closer you get to $\epsilon_{diffusion} = 1$ the worse your result will be after n time steps. Isn't this contrary what you want to see, shouldn't the numerical result be better (less numerical diffusion occurring) the closer $\epsilon_{diffusion}$ gets to 1?

  • $\begingroup$ Do you mean to say that $0.2$ is larger than $0.67$? The expected behavior is that the transport equation just transports the input function. Separated in frequency components this means that their amplitudes remain constant. What is described is that in the numerical method the frequency components degrade to zero, the higher the frequency the faster. This associates similar properties in the sampling theorem. $\endgroup$ Oct 8, 2023 at 6:46
  • $\begingroup$ No, it is not "degrade by", it is "degrade to". In one step, the lower frequency component degrades by $p=1-0.995=0.5\%$. In 80 steps, this gives a degradation by $1-(1-p)^{80}$. Etc. $\endgroup$ Oct 8, 2023 at 7:49

2 Answers 2


Just figured it out. The solution diffuses BY A FACTOR OF $|G|^n$ after n time steps. So in my example, for the low frequency case, if let's say the original signal was a square wave advecting to the right with a constant velocity and had a magnitude of 1, then after 80 time steps it will have a magnitude of $1 * 0.67 = 0.67$. But for the higher frequency components they will diffuse by a factor of 0.2, meaning that the value after 80 time steps will be $1*0.2 = 0.2$. So the higher frequency diffuses faster than the lower frequencies.

Also, the closer $\epsilon_{diffusion}$ gets to $1$, the less diffusion you'll have. In the limiting case, if $\epsilon_{diffusion} = 1$ then the solution diffuses by 0 (since the original solution was changed by a factor of 1, i.e. no change).


@FB, Apparently you are now sorted, but I just wanted to point out a source of confusion you may not yet have considered. Many people call $|G|$ the amplification factor, which I find much more intuitive, and makes clear that values at or just below 1.0 are good. It is terrible notation to call this $\varepsilon$. In your example, and universally, $|G|$ depends on $\sigma$, the Courant number, and is identically equal to 1.0 if $\sigma=0$. This creates an illusion that small time steps are good, which can be convincing until you realize that although you are not diffusing anything you are not doing anything useful either.

Although textbooks and publication often show plots of $|G|$, I prefer to show plots of $|G|^{1/\sigma}$ which is the amplification after the wave travels one wavelength. Raising this to the power $N$ gives the amplification after travelling $N$ wavelengths. For first-order upwinding, you will find that $|G|^{N/\sigma}$ is still identically 1.0 if $\sigma=1$, but this is a also a bit misleading. It is called point to point transfer, and happens only for linear problems with a single constant wavespeed. You will find a lot of literature on high-order advection, but it needs careful reading.

  • $\begingroup$ $|G|^{1/\sigma}$ is not the amplification factor after the wave travels one wavelength. It is $|G|^{N_{ppw}/\sigma}$ where $N_{ppw}$ is the number of grid points per wavelength. $\endgroup$ Oct 14, 2023 at 6:17
  • $\begingroup$ Brian,You are are quite correct. I mistyped. But my basic point is that small timesteps are not good. $\endgroup$
    – Philip Roe
    Oct 15, 2023 at 16:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.