@@ -193,50 +193,52 @@ function ODEFunctionExpr{iip}(sys::AbstractODESystem, dvs = states(sys),
193
193
kwargs... ) where {iip}
194
194
195
195
f_oop, f_iip = generate_function (sys, dvs, ps; expression= Val{true }, kwargs... )
196
+ fsym = gensym (:f )
196
197
_f = quote
197
- f (u,p,t) = $ f_oop (u,p,t)
198
- f (du,u,p,t) = $ f_iip (du,u,p,t)
198
+ $ fsym (u,p,t) = $ f_oop (u,p,t)
199
+ $ fsym (du,u,p,t) = $ f_iip (du,u,p,t)
199
200
end
200
201
202
+ tgradsym = gensym (:tgrad )
201
203
if tgrad
202
204
tgrad_oop, tgrad_iip = generate_tgrad (sys, dvs, ps;
203
205
simplify= simplify,
204
206
expression= Val{true }, kwargs... )
205
207
_tgrad = quote
206
- tgrad (u,p,t) = $ tgrad_oop (u,p,t)
207
- tgrad (J,u,p,t) = $ tgrad_iip (J,u,p,t)
208
+ $ tgradsym (u,p,t) = $ tgrad_oop (u,p,t)
209
+ $ tgradsym (J,u,p,t) = $ tgrad_iip (J,u,p,t)
208
210
end
209
211
else
210
- _tgrad = :(tgrad = nothing )
212
+ _tgrad = :($ tgradsym = nothing )
211
213
end
212
214
215
+ jacsym = gensym (:jac )
213
216
if jac
214
217
jac_oop,jac_iip = generate_jacobian (sys, dvs, ps;
215
218
sparse= sparse, simplify= simplify,
216
219
expression= Val{true }, kwargs... )
217
220
_jac = quote
218
- jac (u,p,t) = $ jac_oop (u,p,t)
219
- jac (J,u,p,t) = $ jac_iip (J,u,p,t)
221
+ $ jacsym (u,p,t) = $ jac_oop (u,p,t)
222
+ $ jacsym (J,u,p,t) = $ jac_iip (J,u,p,t)
220
223
end
221
224
else
222
- _jac = :(jac = nothing )
225
+ _jac = :($ jacsym = nothing )
223
226
end
224
227
225
228
M = calculate_massmatrix (sys)
226
229
227
230
_M = (u0 === nothing || M == I) ? M : ArrayInterface. restructure (u0 .* u0' ,M)
228
231
229
232
jp_expr = sparse ? :(similar ($ (get_jac (sys)[]),Float64)) : :nothing
230
-
231
233
ex = quote
232
234
$ _f
233
235
$ _tgrad
234
236
$ _jac
235
237
M = $ _M
236
238
ODEFunction {$iip} (
237
- f ,
238
- jac = jac ,
239
- tgrad = tgrad ,
239
+ $ fsym ,
240
+ jac = $ jacsym ,
241
+ tgrad = $ tgradsym ,
240
242
mass_matrix = M,
241
243
jac_prototype = $ jp_expr,
242
244
syms = $ (Symbol .(states (sys))),
0 commit comments