@@ -380,10 +380,10 @@ function build_explicit_observed_function(sys, ts;
380
380
ps = full_parameters (sys),
381
381
op = Operator,
382
382
throw = true )
383
- if (isscalar = ! (ts isa AbstractVector ))
383
+ if (isscalar = symbolic_type (ts) != = NotSymbolic ( ))
384
384
ts = [ts]
385
385
end
386
- ts = unwrap .(Symbolics . scalarize (ts) )
386
+ ts = unwrap .(ts )
387
387
388
388
vars = Set ()
389
389
foreach (v -> vars! (vars, v; op), ts)
@@ -399,9 +399,13 @@ function build_explicit_observed_function(sys, ts;
399
399
end
400
400
401
401
sts = Set (unknowns (sys))
402
+ sts = union (sts, Set (arguments (st)[1 ] for st in sts if istree (st) && operation (st) === getindex))
403
+
402
404
observed_idx = Dict (x. lhs => i for (i, x) in enumerate (obs))
403
405
param_set = Set (parameters (sys))
406
+ param_set = union (param_set, Set (arguments (p)[1 ] for p in param_set if istree (p) && operation (p) === getindex))
404
407
param_set_ns = Set (unknowns (sys, p) for p in parameters (sys))
408
+ param_set_ns = union (param_set_ns, Set (arguments (p)[1 ] for p in param_set_ns if istree (p) && operation (p) === getindex))
405
409
namespaced_to_obs = Dict (unknowns (sys, x. lhs) => x. lhs for x in obs)
406
410
namespaced_to_sts = Dict (unknowns (sys, x) => x for x in unknowns (sys))
407
411
@@ -475,7 +479,7 @@ function build_explicit_observed_function(sys, ts;
475
479
ex = Func (args, [],
476
480
pre (Let (obsexprs,
477
481
isscalar ? ts[1 ] : MakeArray (ts, output_type),
478
- false ))) |> toexpr
482
+ false ))) |> wrap_array_vars (sys, ts)[ 1 ] |> toexpr
479
483
expression ? ex : drop_expr (@RuntimeGeneratedFunction (ex))
480
484
end
481
485
0 commit comments