@@ -1277,9 +1277,18 @@ function linearization_function(sys::AbstractSystem, inputs,
12771277 initialize = true ,
12781278 op = Dict (),
12791279 p = DiffEqBase. NullParameters (),
1280+ zero_dummy_der = false ,
12801281 kwargs... )
1281- sys, diff_idxs, alge_idxs, input_idxs = io_preprocessing (sys, inputs, outputs; simplify,
1282+ ssys, diff_idxs, alge_idxs, input_idxs = io_preprocessing (sys, inputs, outputs;
1283+ simplify,
12821284 kwargs... )
1285+ if zero_dummy_der
1286+ dummyder = setdiff (states (ssys), states (sys))
1287+ defs = Dict (x => 0.0 for x in dummyder)
1288+ @set! ssys. defaults = merge (defs, defaults (ssys))
1289+ op = merge (defs, op)
1290+ end
1291+ sys = ssys
12831292 x0 = merge (defaults (sys), op)
12841293 u0, p, _ = get_u0_p (sys, x0, p; use_union = false , tofloat = true )
12851294 p, split_idxs = split_parameters_by_type (p)
@@ -1612,11 +1621,12 @@ function linearize(sys, inputs, outputs; op = Dict(), t = 0.0,
16121621 allow_input_derivatives = false ,
16131622 zero_dummy_der = false ,
16141623 kwargs... )
1615- if zero_dummy_der
1616- dummyder = setdiff (states (ssys), states (sys))
1617- op = merge (op, Dict (x => 0.0 for x in dummyder))
1618- end
1619- lin_fun, ssys = linearization_function (sys, inputs, outputs; op, kwargs... )
1624+ lin_fun, ssys = linearization_function (sys,
1625+ inputs,
1626+ outputs;
1627+ zero_dummy_der,
1628+ op,
1629+ kwargs... )
16201630 linearize (ssys, lin_fun; op, t, allow_input_derivatives), ssys
16211631end
16221632
0 commit comments