Skip to content

Commit 03dc733

Browse files
authored
Handle split in linearize_symbolic
1 parent 2ce97c8 commit 03dc733

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/linearization.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -501,9 +501,9 @@ where `x` are differential unknown variables, `z` algebraic variables, `u` input
501501
"""
502502
function linearize_symbolic(sys::AbstractSystem, inputs,
503503
outputs; simplify = false, allow_input_derivatives = false,
504-
eval_expression = false, eval_module = @__MODULE__,
504+
eval_expression = false, eval_module = @__MODULE__, split = true,
505505
kwargs...)
506-
sys = mtkcompile(sys; inputs, outputs, simplify, kwargs...)
506+
sys = mtkcompile(sys; inputs, outputs, simplify, split, kwargs...)
507507
diff_idxs, alge_idxs = eq_idxs(sys)
508508
sts = unknowns(sys)
509509
t = get_iv(sys)
@@ -512,10 +512,15 @@ function linearize_symbolic(sys::AbstractSystem, inputs,
512512

513513
fun_expr = generate_rhs(sys; expression = Val{true})[1]
514514
fun = eval_or_rgf(fun_expr; eval_expression, eval_module)
515-
dx = fun(sts, p, t)
516-
515+
517516
h = build_explicit_observed_function(sys, outputs; eval_expression, eval_module)
518-
y = h(sts, p, t)
517+
if split
518+
dx = fun(sts, p, t)
519+
y = h(sts, p, t)
520+
else
521+
dx = fun(sts, p..., t)
522+
y = h(sts, p..., t)
523+
end
519524

520525
fg_xz = Symbolics.jacobian(dx, sts)
521526
fg_u = Symbolics.jacobian(dx, inputs)

0 commit comments

Comments
 (0)