@@ -2285,7 +2285,7 @@ function linearization_function(sys::AbstractSystem, inputs,
2285
2285
2286
2286
function (u, p, t)
2287
2287
p_setter! (oldps, p_getter (u, p... , t))
2288
- newu = u_getter (u, p, t)
2288
+ newu = u_getter (u, p... , t)
2289
2289
return newu, oldps
2290
2290
end
2291
2291
end
@@ -2303,6 +2303,13 @@ function linearization_function(sys::AbstractSystem, inputs,
2303
2303
initfn = NonlinearFunction (initsys; eval_expression, eval_module)
2304
2304
initprobmap = build_explicit_observed_function (
2305
2305
initsys, unknowns (sys); eval_expression, eval_module)
2306
+ if has_index_cache (sys) && get_index_cache (sys) != = nothing
2307
+ initprobmap = let inner = initprobmap
2308
+ fn (u, p:: MTKParameters ) = inner (u, p... )
2309
+ fn (u, p) = inner (u, p)
2310
+ fn
2311
+ end
2312
+ end
2306
2313
ps = parameters (sys)
2307
2314
h = build_explicit_observed_function (sys, outputs; eval_expression, eval_module)
2308
2315
lin_fun = let diff_idxs = diff_idxs,
@@ -2342,7 +2349,7 @@ function linearization_function(sys::AbstractSystem, inputs,
2342
2349
initu0, initp = get_initprob_u_p (u, p, t)
2343
2350
initprob = NonlinearLeastSquaresProblem (initfn, initu0, initp)
2344
2351
nlsol = solve (initprob, initialization_solver_alg)
2345
- u = initprobmap (nlsol)
2352
+ u = initprobmap (state_values ( nlsol), parameter_values (nlsol) )
2346
2353
end
2347
2354
end
2348
2355
uf = SciMLBase. UJacobianWrapper (fun, t, p)
0 commit comments