@@ -189,7 +189,9 @@ function generate_function(sys::AbstractODESystem, dvs = unknowns(sys),
189189 wrap_code = identity,
190190 kwargs... )
191191 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)
193195 else
194196 eqs = [eq for eq in equations (sys)]
195197 end
@@ -211,7 +213,10 @@ function generate_function(sys::AbstractODESystem, dvs = unknowns(sys),
211213 t = get_iv (sys)
212214
213215 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 ))
215220 else
216221 pre, sol_states = get_substitutions_and_solved_unknowns (sys)
217222
@@ -570,9 +575,7 @@ function DiffEqBase.DDEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys)
570575 kwargs... )
571576 f_oop, f_iip = eval_or_rgf .(f_gen; eval_expression, eval_module)
572577 f (u, h, p, t) = f_oop (u, h, p, t)
573- f (u, h, p:: MTKParameters , t) = f_oop (u, h, p... , t)
574578 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)
576579
577580 DDEFunction {iip} (f, sys = sys)
578581end
@@ -595,17 +598,14 @@ function DiffEqBase.SDDEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys
595598 expression_module = eval_module, checkbounds = checkbounds,
596599 kwargs... )
597600 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+
598604 g_gen = generate_diffusion_function (sys, dvs, ps; expression = Val{true },
599605 isdde = true , kwargs... )
600606 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)
605607 g (u, h, p, t) = g_oop (u, h, p, t)
606- g (u, h, p:: MTKParameters , t) = g_oop (u, h, p... , t)
607608 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)
609609
610610 SDDEFunction {iip} (f, g, sys = sys)
611611end
0 commit comments