Skip to content

Commit 8bc75d4

Browse files
refactor: rewrite connection expansion implementation
1 parent f6af87f commit 8bc75d4

File tree

2 files changed

+591
-670
lines changed

2 files changed

+591
-670
lines changed

src/systems/abstractsystem.jl

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1895,35 +1895,20 @@ function n_expanded_connection_equations(sys::AbstractSystem)
18951895
# TODO: what about inputs?
18961896
isconnector(sys) && return length(get_unknowns(sys))
18971897
sys = remove_analysis_points(sys)
1898-
n_variable_connect_eqs = 0
1899-
for eq in equations(sys)
1900-
is_causal_variable_connection(eq.rhs) || continue
1901-
n_variable_connect_eqs += length(get_systems(eq.rhs)) - 1
1902-
end
1903-
19041898
sys, (csets, _) = generate_connection_set(sys)
1905-
ceqs, instream_csets = generate_connection_equations_and_stream_connections(csets)
1906-
n_outer_stream_variables = 0
1907-
for cset in instream_csets
1908-
n_outer_stream_variables += count(x -> x.isouter, cset.set)
1909-
end
1910-
1911-
#n_toplevel_unused_flows = 0
1912-
#toplevel_flows = Set()
1913-
#for cset in csets
1914-
# e1 = first(cset.set)
1915-
# e1.sys.namespace === nothing || continue
1916-
# for e in cset.set
1917-
# get_connection_type(e.v) === Flow || continue
1918-
# push!(toplevel_flows, e.v)
1919-
# end
1920-
#end
1921-
#for m in get_systems(sys)
1922-
# isconnector(m) || continue
1923-
# n_toplevel_unused_flows += count(x->get_connection_type(x) === Flow && !(x in toplevel_flows), get_unknowns(m))
1924-
#end
1925-
1926-
nextras = n_outer_stream_variables + length(ceqs) + n_variable_connect_eqs
1899+
1900+
n_extras = 0
1901+
for cset in csets
1902+
rep = cset[1]
1903+
if rep.type <: Union{InputVar, OutputVar, Equality}
1904+
n_extras += length(cset) - 1
1905+
elseif rep.type == Flow
1906+
n_extras += 1
1907+
elseif rep.type == Stream
1908+
n_extras += count(x -> x.isouter, cset)
1909+
end
1910+
end
1911+
return n_extras
19271912
end
19281913

19291914
Base.show(io::IO, sys::AbstractSystem; kws...) = show(io, MIME"text/plain"(), sys; kws...)

0 commit comments

Comments
 (0)