Skip to content

Commit 7ff933a

Browse files
Revert "fix: fix namespacing of defaults and equations (#2594)" (#2595)
This reverts commit 4ae195b.
1 parent 4ae195b commit 7ff933a

File tree

2 files changed

+8
-72
lines changed

2 files changed

+8
-72
lines changed

src/systems/abstractsystem.jl

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -819,24 +819,22 @@ namespace_controls(sys::AbstractSystem) = controls(sys, controls(sys))
819819

820820
function namespace_defaults(sys)
821821
defs = defaults(sys)
822-
Dict((isparameter(k) ? parameters(sys, k) : unknowns(sys, k)) => namespace_expr(
823-
v, sys; check = true)
822+
Dict((isparameter(k) ? parameters(sys, k) : unknowns(sys, k)) => namespace_expr(v, sys)
824823
for (k, v) in pairs(defs))
825824
end
826825

827826
function namespace_equations(sys::AbstractSystem, ivs = independent_variables(sys))
828827
eqs = equations(sys)
829828
isempty(eqs) && return Equation[]
830-
map(eq -> namespace_equation(eq, sys; ivs, check = true), eqs)
829+
map(eq -> namespace_equation(eq, sys; ivs), eqs)
831830
end
832831

833832
function namespace_equation(eq::Equation,
834833
sys,
835834
n = nameof(sys);
836-
ivs = independent_variables(sys),
837-
check = false)
838-
_lhs = namespace_expr(eq.lhs, sys, n; ivs, check)
839-
_rhs = namespace_expr(eq.rhs, sys, n; ivs, check)
835+
ivs = independent_variables(sys))
836+
_lhs = namespace_expr(eq.lhs, sys, n; ivs)
837+
_rhs = namespace_expr(eq.rhs, sys, n; ivs)
840838
_lhs ~ _rhs
841839
end
842840

@@ -846,36 +844,32 @@ function namespace_assignment(eq::Assignment, sys)
846844
Assignment(_lhs, _rhs)
847845
end
848846

849-
function namespace_expr(
850-
O, sys, n = nameof(sys); ivs = independent_variables(sys), check = false)
847+
function namespace_expr(O, sys, n = nameof(sys); ivs = independent_variables(sys))
851848
O = unwrap(O)
852849
if any(isequal(O), ivs)
853850
return O
854851
elseif istree(O)
855852
T = typeof(O)
856853
renamed = let sys = sys, n = n, T = T
857-
map(a -> namespace_expr(a, sys, n; ivs, check)::Any, arguments(O))
854+
map(a -> namespace_expr(a, sys, n; ivs)::Any, arguments(O))
858855
end
859856
if isvariable(O)
860-
check && !is_variable(sys, O) && !is_parameter(sys, O) && return O
861857
# Use renamespace so the scope is correct, and make sure to use the
862858
# metadata from the rescoped variable
863859
rescoped = renamespace(n, O)
864860
similarterm(O, operation(rescoped), renamed,
865861
metadata = metadata(rescoped))
866862
elseif Symbolics.isarraysymbolic(O)
867-
check && !is_variable(sys, O) && !is_parameter(sys, O) && return O
868863
# promote_symtype doesn't work for array symbolics
869864
similarterm(O, operation(O), renamed, symtype(O), metadata = metadata(O))
870865
else
871866
similarterm(O, operation(O), renamed, metadata = metadata(O))
872867
end
873868
elseif isvariable(O)
874-
check && !is_variable(sys, O) && !is_parameter(sys, O) && return O
875869
renamespace(n, O)
876870
elseif O isa Array
877871
let sys = sys, n = n
878-
map(o -> namespace_expr(o, sys, n; ivs, check), O)
872+
map(o -> namespace_expr(o, sys, n; ivs), O)
879873
end
880874
else
881875
O

test/odesystem.jl

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -995,61 +995,3 @@ let # Issue https://github.com/SciML/ModelingToolkit.jl/issues/2322
995995
sol = solve(prob, Rodas4())
996996
@test sol(1)[]0.6065307685451087 rtol=1e-4
997997
end
998-
999-
# Issue#2344
1000-
function FML2(; name)
1001-
@parameters begin
1002-
k2[1:1] = [1.0]
1003-
end
1004-
systems = @named begin
1005-
constant = Constant(k = k2[1])
1006-
end
1007-
@variables begin
1008-
x(t) = 0
1009-
end
1010-
eqs = [
1011-
D(x) ~ constant.output.u + k2[1]
1012-
]
1013-
ODESystem(eqs, t; systems, name)
1014-
end
1015-
1016-
@mtkbuild model = FML2()
1017-
1018-
@test isequal(ModelingToolkit.defaults(model)[model.constant.k], model.k2[1])
1019-
@test_nowarn ODEProblem(model, [], (0.0, 10.0))
1020-
1021-
# Issue#2477
1022-
function RealExpression(; name, y)
1023-
vars = @variables begin
1024-
u(t)
1025-
end
1026-
eqns = [
1027-
u ~ y
1028-
]
1029-
sys = ODESystem(eqns, t, vars, []; name)
1030-
end
1031-
1032-
function sys1(; name)
1033-
vars = @variables begin
1034-
x(t)
1035-
z(t)[1:1]
1036-
end # doing a collect on z doesn't work either.
1037-
@named e1 = RealExpression(y = x) # This works perfectly.
1038-
@named e2 = RealExpression(y = z[1]) # This bugs. However, `full_equations(e2)` works as expected.
1039-
systems = [e1, e2]
1040-
ODESystem(Equation[], t, Iterators.flatten(vars), []; systems, name)
1041-
end
1042-
1043-
@named sys = sys1()
1044-
sys = complete(sys)
1045-
@test Set(equations(sys)) == Set([sys.e1.u ~ sys.x, sys.e2.u ~ sys.z[1]])
1046-
1047-
# Issue#2522
1048-
@parameters a[1:2]=[1, 2] b=4 c=1
1049-
@variables x(t)=ParentScope(a[1]) y(t)=ParentScope(b)
1050-
@named level0 = ODESystem([D(x) ~ ParentScope(a[2]),
1051-
D(y) ~ ParentScope(c)], t, [x, y], [])
1052-
level1 = ODESystem(Equation[], t, [], [a..., b, c]; name = :level1) level0
1053-
level1 = structural_simplify(level1)
1054-
@test isequal(ModelingToolkit.defaults(level1)[level1.level0.x], level1.a[1])
1055-
@test_nowarn ODEProblem(level1, [], (0, 1))

0 commit comments

Comments
 (0)