@@ -491,14 +491,20 @@ struct Break <: AnalysisPointTransformation
491491    applicable if `add_input == true`. 
492492    """  
493493    default_outputs_to_input:: Bool 
494+     """ 
495+     Whether the added input is a parameter. Only applicable if `add_input == true`. 
496+     """  
497+     added_input_is_param:: Bool 
494498end 
495499
496500""" 
497501    $(TYPEDSIGNATURES)  
498502
499503`Break` the given analysis point `ap`. 
500504""" 
501- Break (ap:: AnalysisPoint , add_input:: Bool  =  false ) =  Break (ap, add_input, false )
505+ function  Break (ap:: AnalysisPoint , add_input:: Bool  =  false , default_outputs_to_input =  false )
506+     Break (ap, add_input, default_outputs_to_input, false )
507+ end 
502508
503509function  apply_transformation (tf:: Break , sys:: AbstractSystem )
504510    modify_nested_subsystem (sys, tf. ap) do  breaksys
@@ -528,9 +534,15 @@ function apply_transformation(tf::Break, sys::AbstractSystem)
528534            new_def
529535        end 
530536        @set!  breaksys. defaults =  defs
531-         unks =  copy (get_unknowns (breaksys))
532-         push! (unks, new_var)
533-         @set!  breaksys. unknowns =  unks
537+         if  tf. added_input_is_param
538+             ps =  copy (get_ps (breaksys))
539+             push! (ps, new_var)
540+             @set!  breaksys. ps =  ps
541+         else 
542+             unks =  copy (get_unknowns (breaksys))
543+             push! (unks, new_var)
544+             @set!  breaksys. unknowns =  unks
545+         end 
534546
535547        return  breaksys, (new_var,)
536548    end 
@@ -812,12 +824,7 @@ Given a list of analysis points, break the connection for each and set the outpu
812824""" 
813825function  handle_loop_openings (sys:: AbstractSystem , aps)
814826    for  ap in  canonicalize_ap (sys, aps)
815-         sys, (outvar,) =  apply_transformation (Break (ap, true , true ), sys)
816-         if  Symbolics. isarraysymbolic (outvar)
817-             push! (get_eqs (sys), outvar ~  zeros (size (outvar)))
818-         else 
819-             push! (get_eqs (sys), outvar ~  0 )
820-         end 
827+         sys, _ =  apply_transformation (Break (ap, true , true , true ), sys)
821828    end 
822829    return  sys
823830end 
@@ -849,10 +856,10 @@ All other keyword arguments are forwarded to `linearization_function`.
849856""" 
850857function  get_linear_analysis_function (
851858        sys:: AbstractSystem , transform, aps; system_modifier =  identity, loop_openings =  [], kwargs... )
852-     sys =  handle_loop_openings (sys, loop_openings)
853-     aps =  canonicalize_ap (sys, aps)
854859    dus =  []
855860    us =  []
861+     sys =  handle_loop_openings (sys, loop_openings)
862+     aps =  canonicalize_ap (sys, aps)
856863    for  ap in  aps
857864        sys, (du, u) =  apply_transformation (transform (ap), sys)
858865        push! (dus, du)
0 commit comments