@@ -216,53 +216,26 @@ function remake(prob::ODEProblem; f = missing,
216216 initialization_data = nothing
217217 end
218218
219- if f === missing
220- if specialization (prob. f) === FunctionWrapperSpecialize
221- ptspan = promote_tspan (tspan)
222- if iip
223- _f = ODEFunction {iip, FunctionWrapperSpecialize} (
224- wrapfun_iip (
225- unwrapped_f (prob. f. f),
226- (newu0, newu0, newp,
227- ptspan[1 ])); initialization_data)
228- else
229- _f = ODEFunction {iip, FunctionWrapperSpecialize} (
230- wrapfun_oop (
231- unwrapped_f (prob. f. f),
232- (newu0, newp,
233- ptspan[1 ])); initialization_data)
234- end
235- else
236- _f = prob. f
237- if __has_initialization_data (_f)
238- props = getproperties (_f)
239- @reset props. initialization_data = initialization_data
240- props = values (props)
241- _f = parameterless_type (_f){iip, specialization (_f), map (typeof, props)... }(props... )
242- end
243- end
244- elseif f isa AbstractODEFunction
245- _f = f
246- elseif specialization (prob. f) === FunctionWrapperSpecialize
219+ f = coalesce (f, prob. f)
220+ f = remake (prob. f; f, initialization_data)
221+
222+ if specialization (f) === FunctionWrapperSpecialize
247223 ptspan = promote_tspan (tspan)
248224 if iip
249- _f = ODEFunction {iip, FunctionWrapperSpecialize} (wrapfun_iip (f,
250- (newu0, newu0, newp,
251- ptspan[1 ])))
225+ f = remake (f; f = wrapfun_iip (unwrapped_f (f. f), (newu0, newu0, newp, ptspan[1 ])))
252226 else
253- _f = ODEFunction {iip, FunctionWrapperSpecialize} (wrapfun_oop (f,
254- (newu0, newp, ptspan[1 ])))
227+ f = remake (f; f = wrapfun_oop (unwrapped_f (f. f), (newu0, newu0, newp, ptspan[1 ])))
255228 end
256229 else
257- _f = ODEFunction {isinplace(prob), specialization(prob.f)} (f)
230+ _f = f
258231 end
259232
260233 prob = if kwargs === missing
261- ODEProblem {isinplace(prob) } (
234+ ODEProblem {iip } (
262235 _f, newu0, tspan, newp, prob. problem_type; prob. kwargs... ,
263236 _kwargs... )
264237 else
265- ODEProblem {isinplace(prob) } (_f, newu0, tspan, newp, prob. problem_type; kwargs... )
238+ ODEProblem {iip } (_f, newu0, tspan, newp, prob. problem_type; kwargs... )
266239 end
267240
268241 if lazy_initialization === nothing
0 commit comments