Skip to content

Commit fe32c64

Browse files
Merge pull request #3276 from AayushSabharwal/as/retain-metadata
fix: retain system metadata when calling `flatten`
2 parents 31f7a54 + e4d5710 commit fe32c64

File tree

5 files changed

+40
-0
lines changed

5 files changed

+40
-0
lines changed

src/systems/diffeqs/odesystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ function flatten(sys::ODESystem, noeqs = false)
409409
initialization_eqs = initialization_equations(sys),
410410
is_dde = is_dde(sys),
411411
tstops = symbolic_tstops(sys),
412+
metadata = get_metadata(sys),
412413
checks = false)
413414
end
414415
end

src/systems/discrete_system/discrete_system.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ function flatten(sys::DiscreteSystem, noeqs = false)
227227
defaults = defaults(sys),
228228
name = nameof(sys),
229229
description = description(sys),
230+
metadata = get_metadata(sys),
230231
checks = false)
231232
end
232233
end

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,7 @@ function flatten(sys::NonlinearSystem, noeqs = false)
859859
defaults = defaults(sys),
860860
name = nameof(sys),
861861
description = description(sys),
862+
metadata = get_metadata(sys),
862863
checks = false)
863864
end
864865
end

src/systems/optimization/optimizationsystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ function flatten(sys::OptimizationSystem)
184184
constraints = constraints(sys),
185185
defaults = defaults(sys),
186186
name = nameof(sys),
187+
metadata = get_metadata(sys),
187188
checks = false
188189
)
189190
end

test/components.jl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,3 +370,39 @@ end
370370
ss = structural_simplify(cbar)
371371
@test isequal(cbar.foo.x, ss.foo.x)
372372
end
373+
374+
@testset "Issue#3275: Metadata retained on `complete`" begin
375+
@variables x(t) y(t)
376+
@testset "ODESystem" begin
377+
@named inner = ODESystem(D(x) ~ x, t)
378+
@named outer = ODESystem(D(y) ~ y, t; systems = [inner], metadata = "test")
379+
@test ModelingToolkit.get_metadata(outer) == "test"
380+
sys = complete(outer)
381+
@test ModelingToolkit.get_metadata(sys) == "test"
382+
end
383+
@testset "NonlinearSystem" begin
384+
@named inner = NonlinearSystem([0 ~ x^2 + 4x + 4], [x], [])
385+
@named outer = NonlinearSystem(
386+
[0 ~ x^3 - y^3], [x, y], []; systems = [inner], metadata = "test")
387+
@test ModelingToolkit.get_metadata(outer) == "test"
388+
sys = complete(outer)
389+
@test ModelingToolkit.get_metadata(sys) == "test"
390+
end
391+
k = ShiftIndex(t)
392+
@testset "DiscreteSystem" begin
393+
@named inner = DiscreteSystem([x(k) ~ x(k - 1) + x(k - 2)], t, [x], [])
394+
@named outer = DiscreteSystem([y(k) ~ y(k - 1) + y(k - 2)], t, [x, y],
395+
[]; systems = [inner], metadata = "test")
396+
@test ModelingToolkit.get_metadata(outer) == "test"
397+
sys = complete(outer)
398+
@test ModelingToolkit.get_metadata(sys) == "test"
399+
end
400+
@testset "OptimizationSystem" begin
401+
@named inner = OptimizationSystem(x^2 + y^2 - 3, [x, y], [])
402+
@named outer = OptimizationSystem(
403+
x^3 - y, [x, y], []; systems = [inner], metadata = "test")
404+
@test ModelingToolkit.get_metadata(outer) == "test"
405+
sys = complete(outer)
406+
@test ModelingToolkit.get_metadata(sys) == "test"
407+
end
408+
end

0 commit comments

Comments
 (0)