|
| 1 | +function concrete_solve(prob::DiffEqBase.DEProblem,alg::Union{DiffEqBase.DEAlgorithm,Nothing},u0::ReverseDiff.TrackedArray,p::ReverseDiff.TrackedArray,args...; |
| 2 | + sensealg=nothing,kwargs...) |
| 3 | + ReverseDiff.track(concrete_solve,prob,alg,u0,p,args...;sensealg=sensealg,kwargs...) |
| 4 | +end |
| 5 | + |
| 6 | +function concrete_solve(prob::DiffEqBase.DEProblem,alg::Union{DiffEqBase.DEAlgorithm,Nothing},u0,p::ReverseDiff.TrackedArray,args...; |
| 7 | + sensealg=nothing,kwargs...) |
| 8 | + ReverseDiff.track(concrete_solve,prob,alg,u0,p,args...;sensealg=sensealg,kwargs...) |
| 9 | +end |
| 10 | + |
| 11 | +function concrete_solve(prob::DiffEqBase.DEProblem,alg::Union{DiffEqBase.DEAlgorithm,Nothing},u0::ReverseDiff.TrackedArray,p,args...; |
| 12 | + sensealg=nothing,kwargs...) |
| 13 | + ReverseDiff.track(concrete_solve,prob,alg,u0,p,args...;sensealg=sensealg,kwargs...) |
| 14 | +end |
| 15 | + |
1 | 16 | ReverseDiff.@grad function concrete_solve(prob,alg,u0,p,args...; |
2 | 17 | sensealg=nothing,kwargs...) |
3 | | - _concrete_solve_adjoint(prob,alg,sensealg,u0,p,args...;kwargs...) |
| 18 | + out = _concrete_solve_adjoint(prob,alg,sensealg,ReverseDiff.value(u0),ReverseDiff.value(p),args...;kwargs...) |
| 19 | + Array(out[1]),out[2] |
4 | 20 | end |
0 commit comments