Skip to content

Commit 4846eac

Browse files
Support FunctionWrappersWrappers in modelingtoolkitize
1 parent fd67388 commit 4846eac

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
1717
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
1818
DomainSets = "5b8099bc-c8ec-5219-889f-1d9e522a28bf"
1919
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
20+
FunctionWrappersWrappers = "77dc65aa-8811-40c2-897b-53d922fa7daf"
2021
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
2122
IfElse = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173"
2223
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"

src/ModelingToolkit.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ using Base: RefValue
2626
using Combinatorics
2727
import IfElse
2828
import Distributions
29+
import FunctionWrappersWrappers
2930

3031
RuntimeGeneratedFunctions.init(@__MODULE__)
3132

src/systems/diffeqs/modelingtoolkitize.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,12 @@ function modelingtoolkitize(prob::DiffEqBase.ODEProblem; kwargs...)
4545
if DiffEqBase.isinplace(prob)
4646
rhs = ArrayInterfaceCore.restructure(prob.u0, similar(vars, Num))
4747
fill!(rhs, 0)
48-
prob.f(rhs, vars, params, t)
48+
if prob.f isa ODEFunction &&
49+
prob.f.f isa FunctionWrappersWrappers.FunctionWrappersWrapper
50+
prob.f.f.fw[1].obj[](rhs, vars, params, t)
51+
else
52+
prob.f(rhs, vars, params, t)
53+
end
4954
else
5055
rhs = prob.f(vars, params, t)
5156
end

0 commit comments

Comments
 (0)