This is to help me relate continuous and discrete, predict what my scheme should be doing, and move toward using the method of manufactured solutions.

There's a solution for constant velocity $c$ advecting a quantity $u(x,t)$ over a 1D domain:

$$ \frac{\partial u}{\partial t} = - c\frac{\partial u}{\partial x} \\ u_t=-cu_x $$ of $\require{enclose} u(x,t) = \enclose{horizontalstrike}{f(x+ct) +} g(x-ct)$, where $g$ is a profile moving with velocity $c$. [edited]

But it's more complicated when the quantity being advected by velocity is the velocity itself:

$$ u_t=-uu_x $$

I worked out one solution $u(x,t)=x/t$: a simple linear profile, starting at $t_0 = 1$. It generalizes to $u(x,t) = (x+a)/(t+b)$, where $a$ changes the x-intercept, and $b$ changes the slope of the initial profile.

A positive slope is divergent (positive 1D $div$), and the line flattens over time as the quantity moves away. However, a negative slope (achieved with $b<1$) is compressive (negative 1D $div$), and leads to a singularity as $t+b \to 0$, and the quantity accelerates towards the x-intercept.

But is there a general solution? Although there's apparently no known solultion to the full navier-stokes equations, it seems to me there should be one for advection of velocity.

For example, I think $u(x, t_0) = cos x$ would diverge on the positive slopes (approaching zero), and compress on the negative slopes (becoming a step function) - but I can't work out a solution (maybe using Taylors series?).

Is there a general analytical solution to the 1D advection of velocity, $u_t=-uu_x$?


1 Answer 1


Your solution for linear case is not correct. For the equation $$ u_t + c u_x = 0 $$ the solution is $$ u(x,t) = u(x-ct,0) = u_0(x-ct) $$ For Burger's eqn, as long as the solution is smooth it can be written as $$ u(x,t) = u(x - u(x,t)t,0) = u_0(x-u(x,t)t) $$ This is implicit equation and in some simple cases, you may be able to find analytical solutions. If there are discontinuities, then the solution in smooth parts is still given as above, but you have to patch them up with the jump condition at places where it is discontinuous. Again this can be done analytically in some simple cases, say if your initial condition is not too nonlinear. You have to find where the shocks will form.

You have to trace the characteristics backward from any point $(x,t)$ to the initial point $(x_0,0)$. These are straight lines so $$ dx/dt = u(x,t), \qquad x = x_0 + u(x,t) t = x_0 + u_0(x_0) t $$ Solve for $x_0 = x_0(x,t)$ which can be done analytically if $u_0$ is simple function. Then $$ u(x,t) = u_0(x_0(x,t)) $$

If there are shocks, then the solution is given by Lax-Oleinik formula, see [1]. But this does not give an explicit analytical solution since the formula involves some minimization problem.

It depends on what you mean by analytic solution. The Lax-Oleinik formula is a general analytical solution, but it may not give you an explicit formula for the solution.

The solution $u(x,t) = x/t$ is a special solution for a rarefaction wave. If you have initial condition $$ u(x,0) = \begin{cases} u_L & x < 0 \\ u_R & x > 0 \end{cases} $$ with $u_L < u_R$, then the solution for Burgers equation is $$ u(x,t) = \begin{cases} u_L & x < u_L t \\ x/t & u_L t \le x \le u_R t\\ u_R & x > u_R t \end{cases} $$

[1] Evans, Partial Differential Equations, Chap. 3, Thm 1, page 145

  • $\begingroup$ Sorry, got that e.g. mixed up with a wave eq solution - edited now. My solution $u = x/t$ to the main problem is correct, isn't it? (though it's undefined at $t=0$, so maybe can't work with characteristics). I don't know the "characteristics" approach, but would it work for e.g. $u_0(x) = cos(x)$? $\endgroup$ Commented Nov 27, 2017 at 6:17
  • $\begingroup$ I worked through your approach using $u_0(x)=x$, and it gives the same solution as mine, but as $u = x/(1+t)$ starting at $t_0=0$, instead of $u = x/t$ starting at $t_0=1$. $\endgroup$ Commented Nov 27, 2017 at 6:24
  • $\begingroup$ There is no avoiding characteristics. So read about it in some pde book. E.g., Whitham, Linear and Nonlinear Waves. The solution $x/t$ is self-similar and arises when you have a Riemann problem as I have written in my answer. $\endgroup$
    – cfdlab
    Commented Nov 27, 2017 at 6:28
  • $\begingroup$ For $u_0(x)=x$ the solution is $u(x,t)=x/(1+t)$ as you can verify by plugging it into the Burger equation. The solution remains smooth for all $t > 0$. For $u_0(x)=\cos x$, you have to solve $x= x_0 + \cos(x_0)t$ for $x_0$ which cannot be done analytically. The solution develops shock at some future time which can be computed from the solution I wrote. Find at what time $u_x$ becomes infinite. $\endgroup$
    – cfdlab
    Commented Nov 27, 2017 at 6:35
  • $\begingroup$ Do I find $u_x$ from your solution $u(x,t) = u_0(x-u(x,t)t)$? Which I think is $u_x(x,t) = u_0'(x-u(x,t)t).(1-u_x(x,t)t)$... assuming that's right, I don't see how to find at what time it becomes infinite. Can you give me a hint (or is it in characteristics)? BTW judging graphically, I think it will be (spatially) at $x=0, \pi/2, \pi$, repeating every $2\pi$. $\endgroup$ Commented Nov 28, 2017 at 5:29

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.