@@ -285,15 +285,16 @@ function connection2set!(connectionsets, namespace, ss, isouter)
285
285
end
286
286
end
287
287
288
- generate_connection_set (sys:: AbstractSystem ) = (connectionsets = ConnectionSet[]; (generate_connection_set! (connectionsets, sys:: AbstractSystem ), connectionsets))
288
+ generate_connection_set (sys:: AbstractSystem ) = (connectionsets = ConnectionSet[]; (generate_connection_set! (connectionsets, sys:: AbstractSystem ), merge ( connectionsets) ))
289
289
function generate_connection_set! (connectionsets, sys:: AbstractSystem , namespace= nothing )
290
290
subsys = get_systems (sys)
291
291
# no connectors if there are no subsystems
292
292
isempty (subsys) && return sys
293
293
294
294
isouter = generate_isouter (sys)
295
295
eqs′ = get_eqs (sys)
296
- eqs = Equation[]
296
+ # eqs = Equation[]
297
+
297
298
# instream_eqs = Equation[]
298
299
# instream_exprs = []
299
300
cts = [] # connections
@@ -303,7 +304,7 @@ function generate_connection_set!(connectionsets, sys::AbstractSystem, namespace
303
304
# elseif collect_instream!(instream_exprs, eq)
304
305
# push!(instream_eqs, eq)
305
306
else
306
- push! (eqs, eq) # split connections and equations
307
+ # push!(eqs, eq) # split connections and equations
307
308
end
308
309
end
309
310
@@ -329,7 +330,7 @@ function generate_connection_set!(connectionsets, sys::AbstractSystem, namespace
329
330
330
331
# pre order traversal
331
332
@set! sys. systems = map (s-> generate_connection_set! (connectionsets, s, renamespace (namespace, nameof (s))), subsys)
332
- @set! sys. eqs = eqs
333
+ # @set! sys.eqs = eqs
333
334
end
334
335
335
336
function Base. merge (csets:: AbstractVector{<:ConnectionSet} )
@@ -372,13 +373,20 @@ function generate_connection_equations_and_stream_connections(csets::AbstractVec
372
373
eqs, stream_connections
373
374
end
374
375
375
- function expand_connections (sys:: AbstractSystem ; debug= false , tol= 1e-10 ,
376
+ function expand_connections (sys:: AbstractSystem ; debug= false , tol= 1e-10 )
377
+ sys, csets = generate_connection_set (sys)
378
+ ceqs, _ = generate_connection_equations_and_stream_connections (csets)
379
+ sys = _expand_connections (sys; debug= debug, tol= tol)
380
+ @set! sys. eqs = [equations (sys); ceqs]
381
+ end
382
+
383
+ function _expand_connections (sys:: AbstractSystem ; debug= false , tol= 1e-10 ,
376
384
rename= Ref {Union{Nothing,Tuple{Symbol,Int}}} (nothing ), stream_connects= [])
377
385
subsys = get_systems (sys)
378
386
isempty (subsys) && return sys
379
387
380
388
# post order traversal
381
- @set! sys. systems = map (s-> expand_connections (s, debug= debug, tol= tol,
389
+ @set! sys. systems = map (s-> _expand_connections (s, debug= debug, tol= tol,
382
390
rename= rename, stream_connects= stream_connects), subsys)
383
391
384
392
isouter = generate_isouter (sys)
@@ -446,25 +454,6 @@ function expand_connections(sys::AbstractSystem; debug=false, tol=1e-10,
446
454
length (dups) == 0 || error (" Connection([$(join (map (nameof, allconnectors), " , " )) ]) has duplicated connections: [$(join (collect (dups), " , " )) ]." )
447
455
end
448
456
449
- if debug
450
- println (" ============BEGIN================" )
451
- println (" Connections for [$(nameof (sys)) ]:" )
452
- foreach (Base. Fix1 (print_with_indent, 4 ), narg_connects)
453
- end
454
-
455
- connection_eqs = Equation[]
456
- for c in narg_connects
457
- ceqs = connect (c)
458
- debug && append! (connection_eqs, ceqs)
459
- append! (eqs, ceqs)
460
- end
461
-
462
- if debug
463
- println (" Connection equations:" )
464
- foreach (Base. Fix1 (print_with_indent, 4 ), connection_eqs)
465
- println (" =============END=================" )
466
- end
467
-
468
457
# stream variables
469
458
if rename[] != = nothing
470
459
name, depth = rename[]
0 commit comments