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!