@@ -22,13 +22,14 @@ using ModelingToolkit: D_nounits as D, t_nounits as t, varmap_to_vars
2222end
2323@named model = Pendulum ()
2424model = complete (model)
25-
2625inputs = [model. τ]
27- (f_oop, f_ip), dvs, psym, io_sys = ModelingToolkit. generate_control_function (
28- model, inputs, split = false )
29-
3026outputs = [model. y]
31- f_obs = ModelingToolkit. build_explicit_observed_function (io_sys, outputs; inputs = inputs)
27+ model, _ = structural_simplify (model, (inputs, outputs))
28+
29+ f, dvs, psym, io_sys = ModelingToolkit. generate_control_function (
30+ model, split = false )
31+
32+ f_obs = ModelingToolkit. build_explicit_observed_function (io_sys, outputs; inputs)
3233
3334expected_state_order = [model. θ, model. ω]
3435permutation = [findfirst (isequal (x), expected_state_order) for x in dvs] # This maps our expected state order to the actual state order
@@ -64,7 +65,7 @@ InfiniteOpt.@variables(m,
6465# Trace the dynamics
6566x0, p = ModelingToolkit. get_u0_p (io_sys, [model. θ => 0 , model. ω => 0 ], [model. L => L])
6667
67- xp = f_oop (x, u, p, τ)
68+ xp = f (x, u, p, τ)
6869cp = f_obs (x, u, p, τ) # Test that it's possible to trace through an observed function
6970
7071@objective (m, Min, tf)
0 commit comments