I have a system of PDEs describing atmospheric chemistry and transport. I use finite-differences to make my system of PDEs into a system of ~10,000 ODEs. I then integrate the ODEs forward in time with the CVODE BDF method (from Sundials). For my current discretization of my PDEs, the jacobian is banded (band width = ~200), so I have been using CVODE's direct banded solver.

However, I'd like to couple additional PDEs to my system, which will cause my jacobian to no longer be banded. Of the options below, what is likely the best way to dealing with this new system of equations, which no longer has a banded jacobian.

  1. Use GMRES to do the linear solves, with the CVODE BDF method
  2. Try to work out the sparsity pattern of my new jacobian, and use a direct linear solver for that sparsity pattern (again sticking with the CVODE BDF method)
  3. Use a split implicit/explicit ODE solver, like ARKODE, instead of CVODE BDF. The new equations I'm adding are not stiff ODEs. It seems like I should be able to solve my stiff ODEs with the implicit method and a direct banded matrix solver, and my new non-stiff ODEs with an explicit method (no jacobian required).
  4. Other?

Thanks for any feedback.

  • 3
    $\begingroup$ For systems of size 10,000, a direct sparse factorization approach would typically be faster and more accurate than using an iterative approach. Depending on how dense the systems are it might be faster to just solve them using a dense factorization approach. $\endgroup$ Jun 9 at 19:25
  • $\begingroup$ Ok sounds good thanks! $\endgroup$ Jun 9 at 21:17
  • $\begingroup$ I second Brian's suggestion. For sparse systems with <100,000 unknowns, sparse direct solvers are the way to go. $\endgroup$ Jun 10 at 2:00
  • $\begingroup$ Agreed with Brian. $\endgroup$ Jun 10 at 3:01
  • $\begingroup$ Thank you all for your feedback. I’ll try the direct sparse solver... this is when I wish I build my project in Julia. I think they have great automatic sparsity detection, which works with their ODE package. $\endgroup$ Jun 10 at 12:17

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.