@@ -930,13 +930,22 @@ function open_loop(sys, ap::Union{Symbol, AnalysisPoint}; system_modifier = iden
930
930
return system_modifier (sys), vars
931
931
end
932
932
933
- function linearization_function (sys:: AbstractSystem ,
933
+ """
934
+ sys, input_vars, output_vars = $(TYPEDSIGNATURES)
935
+
936
+ Apply analysis-point transformations to prepare a system for linearization.
937
+
938
+ Returns
939
+ - `sys`: The transformed system.
940
+ - `input_vars`: A vector of input variables corresponding to the input analysis points.
941
+ - `output_vars`: A vector of output variables corresponding to the output analysis points.
942
+ """
943
+ function linearization_ap_transform (sys,
934
944
inputs:: Union{Symbol, Vector{Symbol}, AnalysisPoint, Vector{AnalysisPoint}} ,
935
- outputs; loop_openings = [], system_modifier = identity, kwargs ... )
945
+ outputs, loop_openings )
936
946
loop_openings = Set (map (nameof, canonicalize_ap (sys, loop_openings)))
937
947
inputs = canonicalize_ap (sys, inputs)
938
948
outputs = canonicalize_ap (sys, outputs)
939
-
940
949
input_vars = []
941
950
for input in inputs
942
951
if nameof (input) in loop_openings
@@ -958,9 +967,15 @@ function linearization_function(sys::AbstractSystem,
958
967
end
959
968
push! (output_vars, output_var)
960
969
end
961
-
962
970
sys = handle_loop_openings (sys, map (AnalysisPoint, collect (loop_openings)))
971
+ return sys, input_vars, output_vars
972
+ end
973
+
974
+ function linearization_function (sys:: AbstractSystem ,
975
+ inputs:: Union{Symbol, Vector{Symbol}, AnalysisPoint, Vector{AnalysisPoint}} ,
976
+ outputs; loop_openings = [], system_modifier = identity, kwargs... )
963
977
978
+ sys, input_vars, output_vars = linearization_ap_transform (sys, inputs, outputs, loop_openings)
964
979
return linearization_function (system_modifier (sys), input_vars, output_vars; kwargs... )
965
980
end
966
981
0 commit comments