CFL condition implies zero time step $\Delta t$ For a one-dimensional conservation law equation
$$u_t+f(u)_x=0,$$
if I understand corectly, CFL condition is $\lvert\frac{\Delta t}{\Delta x}f'\rvert<C$, right?
But I encountered a situation that for Buckley-Leverett equation,
$$f(u) = \frac{u^2}{u^2+(1-u^2)^2},$$
and
$$f'(u) = \frac{2u(1-u)}{(2u^2-2u+1)^2}.$$
For initial condition of step function with value $0$ and $1$ only, $f' \equiv 0$. So time step can be arbitarily large? This doesn't make sense. How to solve this issue?
 A: The CFL condition reads
$$
\gamma = \frac{\Delta t}{\Delta x} \max_u |f'(u)| \leq 1
$$
i.e.
$\Delta t = \gamma\, {\Delta x}/{\max |f'|}$,
where $\gamma$ is the Courant number.
If the initial values satisfy $u\in \lbrace 0, 1\rbrace$, then the characteristic speed $f'$ is zero everywhere at time $t=0$, and the time step becomes infinite. There are several ways to tackle this.
As noted in the comments, the maximum for all ever possible values of $u$ gives $\max |f'| = 2$ which can be used in the CFL condition instead of the current maximum (here zero). Indeed,
$$
\gamma = \frac{\Delta t}{\Delta x} \max_u |f'(u)| \leq 2\frac{\Delta t}{\Delta x} \, ,
$$
so that the choice $\Delta t = \frac12\gamma\Delta x$ ensures CFL stability. This is actually the safest way to handle the inflection point of the Buckley-Leverett equation, which is a typical example of nonconvex conservation law.
Another option consists in initialising the data by the cell averages of the step function instead of its point values. Therefore, if the discontinuity occurs at one of the grid nodes, then the value $u=1/2$ for which $f'=2$ is naturally introduced in the initial data.
