@@ -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, history = true ) .∘
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
@@ -595,17 +598,14 @@ function DiffEqBase.SDDEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys
595
598
expression_module = eval_module, checkbounds = checkbounds,
596
599
kwargs... )
597
600
f_oop, f_iip = eval_or_rgf .(f_gen; eval_expression, eval_module)
601
+ f (u, h, p, t) = f_oop (u, h, p, t)
602
+ f (du, u, h, p, t) = f_iip (du, u, h, p, t)
603
+
598
604
g_gen = generate_diffusion_function (sys, dvs, ps; expression = Val{true },
599
605
isdde = true , kwargs... )
600
606
g_oop, g_iip = eval_or_rgf .(g_gen; eval_expression, eval_module)
601
- f (u, h, p, t) = f_oop (u, h, p, t)
602
- f (u, h, p:: MTKParameters , t) = f_oop (u, h, p... , t)
603
- f (du, u, h, p, t) = f_iip (du, u, h, p, t)
604
- f (du, u, h, p:: MTKParameters , t) = f_iip (du, u, h, p... , t)
605
607
g (u, h, p, t) = g_oop (u, h, p, t)
606
- g (u, h, p:: MTKParameters , t) = g_oop (u, h, p... , t)
607
608
g (du, u, h, p, t) = g_iip (du, u, h, p, t)
608
- g (du, u, h, p:: MTKParameters , t) = g_iip (du, u, h, p... , t)
609
609
610
610
SDDEFunction {iip} (f, g, sys = sys)
611
611
end
0 commit comments