1

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?

EditPiAf
  • 20,898
MonkeyKing
  • 3,178
  • 1
    What exactly are you representing as $f'$? It should be something like $\displaystyle \max_u |f'(u)|$, and that is not zero... It is attained for $u=\frac 12$ and it is $2$. – PierreCarre May 03 '20 at 08:31
  • @PierreCarre Why does a Riemann initial data like $u^0(x,0) = 1 \quad x<0, u^0(x,0) = 0 \quad x\geq 0$ have $\frac{1}{2}$? I don't understand. Is it the shock speed? – MonkeyKing May 03 '20 at 18:09

1 Answers1

0

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.

EditPiAf
  • 20,898