# SplitODEProblem

**URL:** https://discourse.julialang.org/t/splitodeproblem/100061
**Category:** Modelling & Simulations
**Created:** [June 8, 2023, 4:18pm UTC](https://discourse.julialang.org/t/splitodeproblem/100061 "2023-06-08T16:18:14Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![jtgreen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jtgreen/32/44908_2.png) [@jtgreen](https://discourse.julialang.org/u/jtgreen)
#### Post date: [June 8, 2023, 4:18pm UTC](https://discourse.julialang.org/t/splitodeproblem/100061/1 "2023-06-08T16:18:14Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [June 9, 2023, 10:02pm UTC](https://discourse.julialang.org/t/splitodeproblem/100061/2 "2023-06-09T22:02:33Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![jtgreen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jtgreen/32/44908_2.png) [@jtgreen](https://discourse.julialang.org/u/jtgreen)
#### Post date: [June 13, 2023, 2:31pm UTC](https://discourse.julialang.org/t/splitodeproblem/100061/3 "2023-06-13T14:31:46Z")

</div>

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](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!

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [June 13, 2023, 7:00pm UTC](https://discourse.julialang.org/t/splitodeproblem/100061/4 "2023-06-13T19:00:26Z")

</div>

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

---

<div class="post-metadata">

### Author: ![jtgreen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jtgreen/32/44908_2.png) [@jtgreen](https://discourse.julialang.org/u/jtgreen)
#### Post date: [June 15, 2023, 11:37am UTC](https://discourse.julialang.org/t/splitodeproblem/100061/5 "2023-06-15T11:37:16Z")

</div>

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!

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [June 17, 2023, 2:00pm UTC](https://discourse.julialang.org/t/splitodeproblem/100061/6 "2023-06-17T14:00:21Z")

</div>

The benchmarks have some nice examples using SplitODEProblem like:

[https://docs.sciml.ai/SciMLBenchmarksOutput/stable/MOLPDE/burgers\_fdm\_wpd/](https://docs.sciml.ai/SciMLBenchmarksOutput/stable/MOLPDE/burgers_fdm_wpd/)
