Skip to content

Commit 031ead8

Browse files
authored
Merge pull request #1135 from SciML/myb/fix
Check names in equality check between systems
2 parents 892dffe + 0595e7a commit 031ead8

File tree

6 files changed

+12
-9
lines changed

6 files changed

+12
-9
lines changed

docs/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[deps]
2-
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
32
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
3+
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
44

55
[compat]
66
Documenter = "0.27"

src/systems/abstractsystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,7 @@ function toexpr(sys::AbstractSystem)
513513
expr = Expr(:block)
514514
stmt = expr.args
515515

516+
name = Meta.quot(nameof(sys))
516517
iv = independent_variable(sys)
517518
ivname = gensym(:iv)
518519
if iv !== nothing
@@ -535,9 +536,9 @@ function toexpr(sys::AbstractSystem)
535536
defs_name = push_defaults!(stmt, defaults(sys), var2name)
536537

537538
if sys isa ODESystem
538-
push!(stmt, :($ODESystem($eqs_name, $ivname, $stsname, $psname; defaults=$defs_name)))
539+
push!(stmt, :($ODESystem($eqs_name, $ivname, $stsname, $psname; defaults=$defs_name, name=$name)))
539540
elseif sys isa NonlinearSystem
540-
push!(stmt, :($NonlinearSystem($eqs_name, $stsname, $psname; defaults=$defs_name)))
541+
push!(stmt, :($NonlinearSystem($eqs_name, $stsname, $psname; defaults=$defs_name, name=$name)))
541542
end
542543

543544
striplines(expr) # keeping the line numbers is never helpful

src/systems/diffeqs/odesystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ function Base.:(==)(sys1::ODESystem, sys2::ODESystem)
180180
iv1 = independent_variable(sys1)
181181
iv2 = independent_variable(sys2)
182182
isequal(iv1, iv2) &&
183+
isequal(nameof(sys1), nameof(sys2)) &&
183184
_eq_unordered(get_eqs(sys1), get_eqs(sys2)) &&
184185
_eq_unordered(get_states(sys1), get_states(sys2)) &&
185186
_eq_unordered(get_ps(sys1), get_ps(sys2)) &&

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ function flatten(sys::NonlinearSystem)
328328
end
329329

330330
function Base.:(==)(sys1::NonlinearSystem, sys2::NonlinearSystem)
331+
isequal(nameof(sys1), nameof(sys2)) &&
331332
_eq_unordered(get_eqs(sys1), get_eqs(sys2)) &&
332333
_eq_unordered(get_states(sys1), get_states(sys2)) &&
333334
_eq_unordered(get_ps(sys1), get_ps(sys2)) &&

test/odesystem.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ eqs = [D(x) ~ σ*(y-x),
1717
D(z) ~ x*y - β*z]
1818

1919
ModelingToolkit.toexpr.(eqs)[1]
20-
de = ODESystem(eqs; defaults=Dict(x => 1))
20+
@named de = ODESystem(eqs; defaults=Dict(x => 1))
2121
@test eval(toexpr(de)) == de
2222

2323
generate_function(de)
@@ -389,17 +389,17 @@ let
389389
end
390390

391391
# Array vars
392-
using Symbolics: unwrap
392+
using Symbolics: unwrap, wrap
393393
using LinearAlgebra
394394
@variables t
395395
sts = @variables x[1:3](t) y(t)
396-
ps = @parameters p[1:3]
396+
ps = @parameters p[1:3] = [1, 2, 3]
397397
D = Differential(t)
398398
eqs = [
399-
collect(D(x) ~ x)
399+
collect(D.(x) ~ x)
400400
D(y) ~ norm(x)*y
401401
]
402-
sys = ODESystem(eqs, t, [sts...;], [ps...;])
402+
@named sys = ODESystem(eqs, t, [sts...;], [ps...;])
403403
@test isequal(@nonamespace(sys.x), unwrap(x))
404404
@test isequal(@nonamespace(sys.y), unwrap(y))
405405
@test isequal(@nonamespace(sys.p), unwrap(p))

test/structural_transformation/index_reduction.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ lowered_eqs = [D(xˍt) ~ T*x,
2020
D(x) ~ xˍt,
2121
D(y) ~ yˍt,
2222
0 ~ x^2 + y^2 - L^2,]
23-
@test ODESystem(lowered_eqs, t, [xˍt, yˍt, x, y, T], [L, g]) == lowered_sys
23+
@test ODESystem(lowered_eqs, t, [xˍt, yˍt, x, y, T], [L, g], name=:pendulum) == lowered_sys
2424
@test isequal(equations(lowered_sys), lowered_eqs)
2525

2626
# Simple pendulum in cartesian coordinates

0 commit comments

Comments
 (0)