I am trying to solve a semilinear ODE whose linear operator depends on the solution: du/dt = A(u) u + f(u,t)
. The “linear” operator A(u)
is diagonal. I am wondering what is the best approach to solve this problem by DifferentialEquations.jl
.
Strictly speaking, A(u) u
is not a linear term as A
depends on u
, but SplitODEProblem
documented here seems to support u
-dependent linear operator, so I gave it a try. Specifically, I define A(u)
as DiffEqArrayOperator(Diagonal(...), update_func=...)
such that update_func
updates the diagonal matrix as a function of u
. The performance of this approach is unsatisfactory: using SplitODEProblem
is slower than using ODEProblem
.
I think the best approach depends a lot on the properties of A(u)
and f(u, t)
, but any general advices will be appreciated!