Skip to content

Commit e767cfb

Browse files
committed
Use the new connection set generation in expand_connections
1 parent 7442679 commit e767cfb

File tree

1 file changed

+14
-25
lines changed

1 file changed

+14
-25
lines changed

src/systems/connectors.jl

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -285,15 +285,16 @@ function connection2set!(connectionsets, namespace, ss, isouter)
285285
end
286286
end
287287

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)))
289289
function generate_connection_set!(connectionsets, sys::AbstractSystem, namespace=nothing)
290290
subsys = get_systems(sys)
291291
# no connectors if there are no subsystems
292292
isempty(subsys) && return sys
293293

294294
isouter = generate_isouter(sys)
295295
eqs′ = get_eqs(sys)
296-
eqs = Equation[]
296+
#eqs = Equation[]
297+
297298
#instream_eqs = Equation[]
298299
#instream_exprs = []
299300
cts = [] # connections
@@ -303,7 +304,7 @@ function generate_connection_set!(connectionsets, sys::AbstractSystem, namespace
303304
#elseif collect_instream!(instream_exprs, eq)
304305
# push!(instream_eqs, eq)
305306
else
306-
push!(eqs, eq) # split connections and equations
307+
#push!(eqs, eq) # split connections and equations
307308
end
308309
end
309310

@@ -329,7 +330,7 @@ function generate_connection_set!(connectionsets, sys::AbstractSystem, namespace
329330

330331
# pre order traversal
331332
@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
333334
end
334335

335336
function Base.merge(csets::AbstractVector{<:ConnectionSet})
@@ -372,13 +373,20 @@ function generate_connection_equations_and_stream_connections(csets::AbstractVec
372373
eqs, stream_connections
373374
end
374375

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,
376384
rename=Ref{Union{Nothing,Tuple{Symbol,Int}}}(nothing), stream_connects=[])
377385
subsys = get_systems(sys)
378386
isempty(subsys) && return sys
379387

380388
# 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,
382390
rename=rename, stream_connects=stream_connects), subsys)
383391

384392
isouter = generate_isouter(sys)
@@ -446,25 +454,6 @@ function expand_connections(sys::AbstractSystem; debug=false, tol=1e-10,
446454
length(dups) == 0 || error("Connection([$(join(map(nameof, allconnectors), ", "))]) has duplicated connections: [$(join(collect(dups), ", "))].")
447455
end
448456

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-
468457
# stream variables
469458
if rename[] !== nothing
470459
name, depth = rename[]

0 commit comments

Comments
 (0)