Skip to content

Commit fecc07f

Browse files
require DiffEqBase with EvalFunc
1 parent dff202d commit fecc07f

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
3030
[compat]
3131
ArrayInterface = "2.8"
3232
DataStructures = "0.17"
33-
DiffEqBase = "6.28"
33+
DiffEqBase = "6.38"
3434
DiffEqJump = "6.7.5"
3535
DiffRules = "0.1, 1.0"
3636
DocStringExtensions = "0.7, 0.8"

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,28 +145,28 @@ function DiffEqBase.ODEFunction{iip}(sys::AbstractODESystem, dvs = states(sys),
145145
sparse = false,
146146
kwargs...) where {iip}
147147

148-
f_oop,f_iip = ModelingToolkit.eval.(generate_function(sys, dvs, ps; expression=Val{false}, kwargs...))
148+
f_oop,f_iip = ModelingToolkit.eval.(generate_function(sys, dvs, ps; expression=Val{true}, kwargs...))
149149
f(u,p,t) = f_oop(u,p,t)
150150
f(du,u,p,t) = f_iip(du,u,p,t)
151151

152152
if tgrad
153-
tgrad_oop,tgrad_iip = ModelingToolkit.eval.(generate_tgrad(sys, dvs, ps; expression=Val{false}, kwargs...))
153+
tgrad_oop,tgrad_iip = ModelingToolkit.eval.(generate_tgrad(sys, dvs, ps; expression=Val{true}, kwargs...))
154154
_tgrad(u,p,t) = tgrad_oop(u,p,t)
155155
_tgrad(J,u,p,t) = tgrad_iip(J,u,p,t)
156156
else
157157
_tgrad = nothing
158158
end
159159

160160
if jac
161-
jac_oop,jac_iip = ModelingToolkit.eval.(generate_jacobian(sys, dvs, ps; sparse = sparse, expression=Val{false}, kwargs...))
161+
jac_oop,jac_iip = ModelingToolkit.eval.(generate_jacobian(sys, dvs, ps; sparse = sparse, expression=Val{true}, kwargs...))
162162
_jac(u,p,t) = jac_oop(u,p,t)
163163
_jac(J,u,p,t) = jac_iip(J,u,p,t)
164164
else
165165
_jac = nothing
166166
end
167167

168168
if Wfact
169-
tmp_Wfact,tmp_Wfact_t = ModelingToolkit.eval.(generate_factorized_W(sys, dvs, ps; expression=Val{false}, kwargs...))
169+
tmp_Wfact,tmp_Wfact_t = ModelingToolkit.eval.(generate_factorized_W(sys, dvs, ps; expression=Val{true}, kwargs...))
170170
Wfact_oop, Wfact_iip = tmp_Wfact
171171
Wfact_oop_t, Wfact_iip_t = tmp_Wfact_t
172172
_Wfact(u,p,dtgamma,t) = Wfact_oop(u,p,dtgamma,t)

src/systems/diffeqs/sdesystem.jl

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,32 +102,32 @@ function DiffEqBase.SDEFunction{iip}(sys::SDESystem, dvs = sys.states, ps = sys.
102102
u0 = nothing;
103103
version = nothing, tgrad=false, sparse = false,
104104
jac = false, Wfact = false, kwargs...) where {iip}
105-
f_oop,f_iip = generate_function(sys, dvs, ps; expression=Val{false}, kwargs...)
106-
g_oop,g_iip = generate_diffusion_function(sys, dvs, ps; expression=Val{false}, kwargs...)
105+
f_oop,f_iip = ModelingToolkit.eval.(generate_function(sys, dvs, ps; expression=Val{true}, kwargs...))
106+
g_oop,g_iip = ModelingToolkit.eval.(generate_diffusion_function(sys, dvs, ps; expression=Val{true}, kwargs...))
107107

108108
f(u,p,t) = f_oop(u,p,t)
109109
f(du,u,p,t) = f_iip(du,u,p,t)
110110
g(u,p,t) = g_oop(u,p,t)
111111
g(du,u,p,t) = g_iip(du,u,p,t)
112112

113113
if tgrad
114-
tgrad_oop,tgrad_iip = generate_tgrad(sys, dvs, ps; expression=Val{false}, kwargs...)
114+
tgrad_oop,tgrad_iip = ModelingToolkit.eval.(generate_tgrad(sys, dvs, ps; expression=Val{true}, kwargs...))
115115
_tgrad(u,p,t) = tgrad_oop(u,p,t)
116116
_tgrad(J,u,p,t) = tgrad_iip(J,u,p,t)
117117
else
118118
_tgrad = nothing
119119
end
120120

121121
if jac
122-
jac_oop,jac_iip = generate_jacobian(sys, dvs, ps; expression=Val{false}, sparse=sparse, kwargs...)
122+
jac_oop,jac_iip = ModelingToolkit.eval.(generate_jacobian(sys, dvs, ps; expression=Val{true}, sparse=sparse, kwargs...))
123123
_jac(u,p,t) = jac_oop(u,p,t)
124124
_jac(J,u,p,t) = jac_iip(J,u,p,t)
125125
else
126126
_jac = nothing
127127
end
128128

129129
if Wfact
130-
tmp_Wfact,tmp_Wfact_t = generate_factorized_W(sys, dvs, ps, true; expression=Val{false}, kwargs...)
130+
tmp_Wfact,tmp_Wfact_t = ModelingToolkit.eval.(generate_factorized_W(sys, dvs, ps, true; expression=Val{true}, kwargs...))
131131
Wfact_oop, Wfact_iip = tmp_Wfact
132132
Wfact_oop_t, Wfact_iip_t = tmp_Wfact_t
133133
_Wfact(u,p,dtgamma,t) = Wfact_oop(u,p,dtgamma,t)
@@ -141,10 +141,11 @@ function DiffEqBase.SDEFunction{iip}(sys::SDESystem, dvs = sys.states, ps = sys.
141141
M = calculate_massmatrix(sys)
142142
_M = (u0 === nothing || M == I) ? M : ArrayInterface.restructure(u0 .* u0',M)
143143

144-
SDEFunction{iip}(f,g,jac=_jac,
145-
tgrad = _tgrad,
146-
Wfact = _Wfact,
147-
Wfact_t = _Wfact_t,
144+
SDEFunction{iip}(DiffEqBase.EvalFunc(f),DiffEqBase.EvalFunc(g),
145+
jac = _jac === nothing ? nothing : DiffEqBase.EvalFunc(_jac),
146+
tgrad = _tgrad === nothing ? nothing : DiffEqBase.EvalFunc(_tgrad),
147+
Wfact = _Wfact === nothing ? nothing : DiffEqBase.EvalFunc(_Wfact),
148+
Wfact_t = _Wfact_t === nothing ? nothing : DiffEqBase.EvalFunc(_Wfact_t),
148149
mass_matrix = _M,
149150
syms = Symbol.(sys.states))
150151
end

0 commit comments

Comments
 (0)