@@ -189,7 +189,9 @@ function generate_function(sys::AbstractODESystem, dvs = unknowns(sys),
189
189
wrap_code = identity,
190
190
kwargs... )
191
191
if isdde
192
- eqs = delay_to_function (sys)
192
+ issplit = has_index_cache (sys) && get_index_cache (sys) != = nothing
193
+ eqs = delay_to_function (
194
+ sys; history_arg = issplit ? MTKPARAMETERS_ARG : DEFAULT_PARAMS_ARG)
193
195
else
194
196
eqs = [eq for eq in equations (sys)]
195
197
end
@@ -211,7 +213,10 @@ function generate_function(sys::AbstractODESystem, dvs = unknowns(sys),
211
213
t = get_iv (sys)
212
214
213
215
if isdde
214
- build_function (rhss, u, DDE_HISTORY_FUN, p... , t; kwargs... )
216
+ build_function (rhss, u, DDE_HISTORY_FUN, p... , t; kwargs... ,
217
+ wrap_code = wrap_code .∘ wrap_mtkparameters (sys, false , 3 ) .∘
218
+ wrap_array_vars (sys, rhss; dvs, ps) .∘
219
+ wrap_parameter_dependencies (sys, false ))
215
220
else
216
221
pre, sol_states = get_substitutions_and_solved_unknowns (sys)
217
222
@@ -570,9 +575,7 @@ function DiffEqBase.DDEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys)
570
575
kwargs... )
571
576
f_oop, f_iip = eval_or_rgf .(f_gen; eval_expression, eval_module)
572
577
f (u, h, p, t) = f_oop (u, h, p, t)
573
- f (u, h, p:: MTKParameters , t) = f_oop (u, h, p... , t)
574
578
f (du, u, h, p, t) = f_iip (du, u, h, p, t)
575
- f (du, u, h, p:: MTKParameters , t) = f_iip (du, u, h, p... , t)
576
579
577
580
DDEFunction {iip} (f, sys = sys)
578
581
end
0 commit comments