SplitODEProblem

Is it possible to use other combinations of solvers for instance forward euler for an explicit method and CVODE_BDF from sundials (w/ linear_solver=:GMRES) for the implicit? Rather than the provided combinations listed in the documentation?

No. Nor does it necessarily make sense. Mixing two arbitrary methods does not necessarily result in good convergence. Generally it “should” work, though if you say use 5th order BDF with 5th order Tsit5 you only get a 1st order method IIRC (or at best a 2nd order method), and you have some very odd stability properties. The methods in the SplitODEProblem setups are designed to have good stability and convergence properties that such an arbitrary pairing would not guarantee.

Thanks Chris.

Then I have a terribly simple naive question: regarding then the Crank-Nicolson Adams Bashforth scheme, what would I pass in for the crank nicolson portion? Obviously, I’m working w/ reaction diffusion equations in 2d and I tried in this post to use crank nicolson for the diffusion part–https://discourse.julialang.org/t/2d-diffusion-and-crank-nicolson/99528--but w/ mixed results. My question is: what form is the crank nicolson expecting the function to be in? I couldn’t find anything in the code base to help explain. Does it want a centered difference? The full crank nicolson discretization as I have (probably wrongly) implemented at that mentioned post?

Thanks for suffering fools!

Oh I never saw the first post sorry. Must’ve escaped me. The spatial discretization is left to the user. 2nd order centered differences is fine. The issue really is that split methods assume that the non implicit part is non stuff. A lot of reaction diffusion equations violate that and that will effect the performance. So you do need to make sure that if you do split that the ex part is truly nonstiff. If the reactions are nonstiff then the cn on the diffusion is a decent scheme, though still not great.

Note that the KenCarp methods, particularly KenCarp4, is just generally better.

Did I answer all of the questions here? I’ll need to read that other post sometime at home, maybe tomorrow

I don’t know how you do it anyway, but thanks, please do let me know if you can what you think of my attempt at crank nicolson, as I haven’t seen this particular example in any other Julia posts. Thanks!

The benchmarks have some nice examples using SplitODEProblem like:

https://docs.sciml.ai/SciMLBenchmarksOutput/stable/MOLPDE/burgers_fdm_wpd/