I recently coded a 1 stage and 3 stage optimal TVD-RK explicit scheme using eqn 3.3 here


on the equation Ux+Uy=0, where x and y are the independent variables with which U velocity is differentiated. It is a 1D problem. The space is discretized using the upwind scheme.

I am running it for 100 mesh size, and a constant declared CFL of 1. I see that as the solution progresses to t=1s for TVD-3, the solution disperses in both value and shape very fast, while for TVD-1 it gives perfect shift. My question is-is this supposed to happen? I do not think changing the time accuracy to 3 stages should necessarily affect the shape/values of the function to such a huge degree.

If I not, then I think I do not understand the implementation of TVD. I did it exactly as described in the paper. Except I am not sure if I should have CFL different for each stage, or if the CFL should be multiplied by (1/(2p+1)) where p is the order of the polynomial. Can you guys help me?


Yes, this is the expected behavior. If you plug CFL=1 into most 1st-order schemes, you'll see that they give the exact solution. If you do the same for most higher-order schemes, you'll see that they don't.

Of course, the purpose of these schemes is not to solve the linear, scalar advection equation in 1D. For more complicated situations (systems, multi-D, nonlinear), you can't impose a CFL number of 1 for all waves everywhere, so the fact above is irrelevant. If you run both schemes for the advection equation at a CFL number significantly smaller than 1, you'll see that the high-order scheme is more accurate.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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