I want to solve linear hyperbolic system using Chebyshev collocation method. As this method puts severe constraint on the time step for the explicit time integration, I decided to switch to implicit time integration (backward Euler). I use time integrator vode with options method='bdf' and order=1 from Python package scipy.integrate. I do not supply Jacobian to the time integrator, only the vector of right-hand side. In the beginning it was great: the computation with resolution $N=100$ gave me solution 108 times faster with implicit time integration, then with explicit (Runge-Kutta 4th order).

Unfortunately, It turned out that if I increase the grid resolution, then computations become unstable—in initial time period solution is stable, but then it starts to "tremble" and develops instability.

This figure shows the numerically stable solution obtained with resolution $N=200$: Stable solution with resolution N=200

This figure shows the numerically unstable solution obtained with resolution $N=400$: Unstable solution with resolution N=400

Could you please recommend to me implicit time integrators that are good to use with Chebyshev collocation method?

  • $\begingroup$ Little late here, but are you sure your Newton solver is still converging? While implicit methods are A-stable in theory, in practice a too large time step can prevent your typically iterative solver from converging. $\endgroup$ – Daniel Aug 10 '15 at 7:37
  • $\begingroup$ I use CVODE, which takes internal steps as needed. I think that the problem is in ill-conditioned matrix of the system, because condition number is about 10e+16. Unfortunately, I don't know how to improve this. $\endgroup$ – Dmitry Kabanov Aug 13 '15 at 13:31
  • $\begingroup$ I do not have much experience with CVODE - can you tell it to print out residuals of the nonlinear solver? Or increase the number of maximum Newton iterations? Typically, if your solver converges badly, you would want to find a good preconditioner. $\endgroup$ – Daniel Aug 15 '15 at 8:05
  • $\begingroup$ Yes, I also think that I need to use a good preconditioner. The problem is I don't know how to construct the preconditioning matrices. I mean, not for the code, but on a paper. $\endgroup$ – Dmitry Kabanov Sep 9 '15 at 12:50
  • $\begingroup$ In PETSc for example, you can just use an algebraic multi-grid as preconditioner. You can look if CVODE offers a similar possibility. $\endgroup$ – Daniel Sep 10 '15 at 12:26

Your Answer

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

Browse other questions tagged or ask your own question.