SciMLOperators.jl icon indicating copy to clipboard operation
SciMLOperators.jl copied to clipboard

Dual number cache for use with ForwardDiff.jl

Open ctessum opened this issue 6 months ago • 2 comments

Is your feature request related to a problem? Please describe.

The problem is described here: https://discourse.julialang.org/t/how-to-use-scimloperators-jl-with-autograd-in-differentialequations-jl/117731

Describe the solution you’d like

I would like to be able to use SciMLOperators in an in-place ODEFunction, with a solver that does autodiff using ForwardDiff.jl. Here is an example:

using SciMLOperators, DifferentialEquations

op = FunctionOperator((du,u,p,t) -> du .= u .* u, rand(10), t=0.0, p=[0.0], batch=true)
op = cache_operator(op, rand(10))

prob = ODEProblem{true}(op, rand(10), (0.0,1.0), [0.0])

solve(prob, Rosenbrock23())

Currently, the above code doesn't work, presumably owing to the operator cache being Float64s rather than dual numbers.

ctessum avatar Aug 05 '24 12:08 ctessum