Skip to content

Commit 2c694b5

Browse files
Merge pull request #3168 from AayushSabharwal/as/fix-complete
fix: fix `complete` not properly expanding systems
2 parents 75fdc56 + 4f89f08 commit 2c694b5

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

src/systems/abstractsystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -933,8 +933,8 @@ function complete(sys::AbstractSystem; split = true, flatten = true)
933933
@set! sys.ps = unique!(vcat(get_ps(sys), collect(newparams)))
934934
end
935935
if flatten
936-
if (eqs = equations(sys)) isa Vector &&
937-
any(eq -> eq isa Equation && isconnection(eq.lhs), eqs)
936+
eqs = equations(sys)
937+
if eqs isa AbstractArray && eltype(eqs) <: Equation
938938
newsys = expand_connections(sys)
939939
else
940940
newsys = sys

test/odesystem.jl

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1467,3 +1467,31 @@ end
14671467
obsfn(buf, prob.u0, prob.p, 0.0)
14681468
@test buf [1.0, 1.0, 2.0]
14691469
end
1470+
1471+
@testset "`complete` expands connections" begin
1472+
using ModelingToolkitStandardLibrary.Electrical
1473+
@mtkmodel RC begin
1474+
@parameters begin
1475+
R = 1.0
1476+
C = 1.0
1477+
V = 1.0
1478+
end
1479+
@components begin
1480+
resistor = Resistor(R = R)
1481+
capacitor = Capacitor(C = C, v = 0.0)
1482+
source = Voltage()
1483+
constant = Constant(k = V)
1484+
ground = Ground()
1485+
end
1486+
@equations begin
1487+
connect(constant.output, source.V)
1488+
connect(source.p, resistor.p)
1489+
connect(resistor.n, capacitor.p)
1490+
connect(capacitor.n, source.n, ground.g)
1491+
end
1492+
end
1493+
@named sys = RC()
1494+
total_eqs = length(equations(expand_connections(sys)))
1495+
sys2 = complete(sys)
1496+
@test length(equations(sys2)) == total_eqs
1497+
end

0 commit comments

Comments
 (0)