@@ -230,3 +230,25 @@ def test_string_inputoutput():
230230
231231 P_s2 = ct .interconnect ([P1_iosys , P2_iosys ], inputs = ['u1' ], output = 'y2' )
232232 assert P_s2 .output_index == {'y2' : 0 }
233+
234+ def test_linear_interconnect ():
235+ tf_ctrl = ct .tf (1 , (10.1 , 1 ), inputs = 'e' , outputs = 'u' )
236+ tf_plant = ct .tf (1 , (10.1 , 1 ), inputs = 'u' , outputs = 'y' )
237+ ss_ctrl = ct .ss (1 , 2 , 1 , 2 , inputs = 'e' , outputs = 'u' )
238+ ss_plant = ct .ss (1 , 2 , 1 , 2 , inputs = 'u' , outputs = 'y' )
239+ nl_ctrl = ct .NonlinearIOSystem (
240+ lambda t , x , u , params : x * x ,
241+ lambda t , x , u , params : u * x , states = 1 , inputs = 'e' , outputs = 'u' )
242+ nl_plant = ct .NonlinearIOSystem (
243+ lambda t , x , u , params : x * x ,
244+ lambda t , x , u , params : u * x , states = 1 , inputs = 'u' , outputs = 'y' )
245+
246+ assert isinstance (ct .interconnect ((tf_ctrl , tf_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
247+ assert isinstance (ct .interconnect ((ss_ctrl , ss_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
248+ assert isinstance (ct .interconnect ((tf_ctrl , ss_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
249+ assert isinstance (ct .interconnect ((ss_ctrl , tf_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
250+
251+ assert ~ isinstance (ct .interconnect ((nl_ctrl , ss_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
252+ assert ~ isinstance (ct .interconnect ((nl_ctrl , tf_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
253+ assert ~ isinstance (ct .interconnect ((ss_ctrl , nl_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
254+ assert ~ isinstance (ct .interconnect ((tf_ctrl , nl_plant ), inputs = 'e' , outputs = 'y' ), ct .LinearIOSystem )
0 commit comments