Skip to content

Commit e24bd29

Browse files
committed
Remember to attach metadata back
1 parent a5c9440 commit e24bd29

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

src/systems/abstractsystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,9 +501,10 @@ function namespace_expr(O, sys, n = nameof(sys))
501501
map(a -> namespace_expr(a, sys, n)::Any, arguments(O))
502502
end
503503
if isvariable(O)
504-
similarterm(O, renamespace(n, operation(O)), renamed)::T
504+
similarterm(O, renamespace(n, operation(O)), renamed,
505+
metadata = metadata(O))::T
505506
else
506-
similarterm(O, operation(O), renamed)::T
507+
similarterm(O, operation(O), renamed, metadata = metadata(O))::T
507508
end
508509
elseif isvariable(O)
509510
renamespace(n, O)

test/dde.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,27 @@ sys = structural_simplify(sys)
8282
@test isequal(ModelingToolkit.get_noiseeqs(sys), [α * x(t) + γ;;])
8383
prob_mtk = SDDEProblem(sys, [x(t) => 1.0 + t], tspan; constant_lags = (τ,));
8484
@test_nowarn sol_mtk = solve(prob_mtk, RKMil())
85+
86+
87+
@variables t
88+
D = Differential(t)
89+
@parameters x(..) a
90+
91+
function oscillator(;name, k=1.0, τ=0.01)
92+
@parameters k=k τ=τ
93+
@variables x(..)=0.1 y(t)=0.1 jcn(t)=0.0 delx(t)
94+
eqs = [D(x(t)) ~ y,
95+
D(y) ~ -k*x(t-τ)+jcn,
96+
delx ~ x(t-τ)]
97+
return System(eqs; name=name)
98+
end
99+
100+
@named osc1 = oscillator(k=1.0, τ=0.01)
101+
@named osc2 = oscillator(k=2.0, τ=0.04)
102+
eqs = [osc1.jcn ~ osc2.delx,
103+
osc2.jcn ~ osc1.delx]
104+
@named coupledOsc = System(eqs, t)
105+
@named coupledOsc = compose(coupledOsc, [osc1, osc2])
106+
sys = structural_simplify(coupledOsc)
107+
@test length(equations(sys)) == 4
108+
@test length(states(sys)) == 4

0 commit comments

Comments
 (0)