Solving a large sparse ODE using Exponential methods

Hello,

I need to integrate a differential equation of the form

\dot{u} = L(t) u \, ,

where u is a vector,

L(t) = L_0 + c(t) * L_1 \, ,

L_0 and L_1 large sparse matrices, and c(t) a time dependent coefficient.

I know I can use the Runge Kutta solvers inside DifferentialEquations.jl, or their derivatives like Tsit5 or Vern7.

I recently knew about a method that first expands e^{x} into a truncated series, then express it into the product of x-z_i (where z_i are the roots of the polynomial. Then the time evolution evolves according to the product of 1 - dt / z_i * L(t + t + dt) where L(t, t + dt) is the Magnus expansion of it. Are there similar methods within DifferentialEquations.jl? Would I see some advantages with respect to Tsit5 or Vern7 for example?

My current implementation involves SciMLOperator.jl, where I construct similar to

L = MatrixOperator(L_0) + ScalarOperator(0, update_func=my_func) * MatrixOperator(L_1)

and I efficiently use it with non-exponential methods like Tsit5 and similars.

Do the state-independent solvers expressed here support SciMLOperators.jl? I see that they use DiffEqArrayOperator instead.

Moreover, I see there are many solvers that might be the case, like the ones here and here. Can I use them form my case?

1 Like

Note these kinds of things are generally only better if there are manifold constraints you’re trying to impose.

Yes

Could you explain it better?

Also is there some documentation for the solvers here and here? Some of them seem very interesting to my case, if not exactly the thing I want. But I don’t have so much information about these algorithms.

At least at this time, these methods are not faster than the normal methods in most cases. It’s only if you really need the manifold constraint guaranteed (for example, positivity) that these methods give a property that the other methods don’t. At least, that’s with the current state of the methods, the current state of ExponentialUtilities.jl, etc. Maybe some benchmarks will change in their future if we keep improving the exponential tooling.

3 Likes

Can you provide any references or benchmark results for this conclusion that ETDRK4 is slower than Tsit5 and Vern7 in most cases?

1 Like

I think we have comparisons in SciMLBenchmarks

I browsed around the website, but couldn’t find the relevant result about the comparison between the exponential methods and the other methods. Could you provide the exact web page links? Thanks a lot.

it actually looks like we’re missing those benchmarks. Time to add a new section…

2 Likes